Модель хостинга в ASP.NET 5

В ASP.NET 5 существенно поменялась модель хостинга приложения внутри веб-сервера. В предыдущих версиях ASP.NET за хостинг приложения отвечали модули, которые являются частью IIS. В ASP.NET 5 эта часть вынесена из веб-сервера в отдельную библиотеку — HTTP Platform Handler.

Приложение на ASP.NET 5 в корне содержит файл web.config, который указывает веб-серверу использовать HTTP Platform Handler:

<configuration>
  <system.webServer>
    <handlers>
      <add name="httpplatformhandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" />
    </handlers>
    <httpPlatform processPath="..\approot\web.cmd" arguments="" stdoutLogEnabled="false" stdoutLogFile="..\logs\stdout.log" startupTimeLimit="3600"></httpPlatform>
  </system.webServer>
</configuration>

Такой подход предполагает наличие установленной библиотеки HTTP Platform Handler на сервере, где запускается приложение. Когда вы устанавливаете ASP.NET Tools на локальный компьютер, HTTP Platform Handler устанавливается вместе с ними и IIS корректно регаирует на этот способ хостинга.

Однако, если вы перенесете это приложение на сервер, то обнаружите ошибку при запуске приложения. Все потому, что HTTP Platform Handler там не установлен. Вот две ссылки для загрузки установочного пакета HTTP Platform Handler:

В web.config можно задать переменные окружения, которые будут использоваться при запуске приложения. Это значение можно использовать внутри приложения, чтобы менять поведение в процессе работы.

<httpPlatform processPath="..\approot\web.cmd" arguments="" stdoutLogEnabled="false" stdoutLogFile="..\logs\stdout.log" startupTimeLimit="3600">
  <environmentVariables>
    <environmentVariable name="environment" value="prod" />
  </environmentVariables>
</httpPlatform>