.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 без каких-либо изменений. Возможно, что причина вашей ошибки.