.NET Core опубликовать в IIS - Ошибка HTTP 502.3 - Плохой шлюз - указанное приложение CGI обнаружило ошибку, и сервер завершил процесс

Я пытаюсь опубликовать в IIS веб-сайт .NET Core ASP.NET, который я обновил с RC2 до RTM.

В качестве проверки работоспособности мне удалось опубликовать приложение шаблона/образца "Базовое веб-приложение ASP.NET(.NET Framework)" из Visual Studio 2015.

Но по какой-то причине при публикации обновленного приложения RTM я получаю сообщение об ошибке HTTP 502.3 - Bad Gateway В указанном приложении CGI обнаружена ошибка, и сервер завершил процесс.

Сайт работает под управлением IIS Express из Visual Studio.

Как я могу отладить это? У кого-нибудь есть идеи?

Error 502.3

web.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>

<system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
    </handlers>
    <aspNetCore processPath=".\MyApp.exe" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
  </system.webServer>
</configuration>

project.json

{
  "buildOptions": {
  "emitEntryPoint": true,
  "preserveCompilationContext": true,
  "warningsAsErrors": true
},
"dependencies": {
  "Microsoft.AspNetCore.Diagnostics.Elm": "0.1.0",
  "Microsoft.AspNetCore.Authentication.Cookies": "1.0.0",
  "Microsoft.AspNetCore.Authorization": "1.0.0",
  "Microsoft.AspNetCore.Diagnostics": "1.0.0",
  "Microsoft.AspNetCore.Hosting": "1.0.0",
  "Microsoft.AspNetCore.Hosting.Abstractions": "1.0.0",
  "Microsoft.AspNetCore.Http.Extensions": "1.0.0",
  "Microsoft.AspNetCore.Localization": "1.0.0",
  "Microsoft.AspNetCore.Mvc": "1.0.0",
  "Microsoft.AspNetCore.Routing": "1.0.0",
  "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
  "Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
  "Microsoft.AspNetCore.Session": "1.0.0",
  "Microsoft.AspNetCore.StaticFiles": "1.0.0",
  "Microsoft.Extensions.Caching.SqlServer": "1.0.0",
  "Microsoft.Extensions.Logging.Console": "1.0.0",
  "Microsoft.Extensions.Logging.Debug": "1.0.0",
  "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0",

  "Microsoft.AspNetCore.Razor.Tools": {
    "version": "1.0.0-preview2-final",
    "type": "build"
  },

  "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
  "Microsoft.Extensions.Configuration.Json": "1.0.0",
  "Microsoft.Extensions.Logging": "1.0.0",
  "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0"
},

"frameworks": {
   "net461": {}
 },

"tools": {
  "BundlerMinifier.Core": "2.0.238",
  "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final",
  "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
},

"scripts": {
  "prepublish": [ "bower install", "dotnet bundle" ],
  "postpublish": "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%"
},

"publishOptions": {
  "include": [
    "wwwroot",
    "web.config",
    "appsettings.json",
    "**/*.cshtml",
    "Config/*.json"
    ]
  ]
 }
}

Ответ 1

Как я могу отладить это? У кого-нибудь есть идеи?

Вот три идеи:

  • Прочитайте это и убедитесь, что вы написали все, что он говорит.

  • Запустите опубликованный .\MyApp.exe из командной строки. Это работает?

    • Если это так, вы знаете, что у вас есть проблема интеграции IIS.
    • Если это не так, вы знаете, что у вас есть проблема с приложением.
  • Измените stdoutLogEnabled="false" на true, а затем проверьте журналы в stdoutLogFile=".\logs\stdout". Ошибка там может что-то сказать.

  • Проверьте журналы приложений IIS в средстве просмотра событий. Ошибка там может что-то сказать.

Журналы приложений журнала событий

Журналы приложений просмотра событий

Ответ 2

Если вы запускаете задачу в течение длительного времени, а веб-браузер не получает ответ за 2 минуты (время запроса по умолчанию), вы получите эту ошибку. Поскольку после таймаута IIS заменит приложение, чтобы ответить клиенту на "Bad Gateway".

Возможно, вам нужно изменить время запроса в файле web.config.

Установите атрибут requestTimeout в разделе system.webServer/aspNetCore, чтобы указать продолжительность, в течение которой основной модуль ASP.NET будет ожидать ответа от процесса, прослушивающего% ASPNETCORE_PORT%.

  • requestTimeout должен указываться только в течение целых минут, в противном случае он по умолчанию составляет 2 минуты.

Точно так же:

<system.webServer>
  <aspNetCore requestTimeout="00:20:00" ... />
</system.webServer>

Ответ 3

Решения не спомогли мне, но то, что сделал:

Включите режим веб-разработчика (нажмите F12 в вашем браузере) => вкладка приложения => и удалите все куки. Обновите страницу и вуаля: это работает. Также вы можете скопировать свой URL и вставить в другой браузер, у которого вы не запускали ни одного проекта MVC.

Мой проект работал на Internet Explorer и Microsoft Edge без каких-либо изменений. Возможно, что причина вашей ошибки.