Dot-Net

.NET Core 發佈到 IIS - HTTP 錯誤 502.3 - 網關錯誤 - 指定的 CGI 應用程序遇到錯誤,伺服器終止了程序

  • September 28, 2016

我正在嘗試將我從 RC2 升級到 RTM 的 .NET Core ASP.NET 網站發佈到 IIS。

作為健全性檢查,我成功地從 Visual Studio 2015 發布了模板/範例“ASP.NET Core Web 應用程序 (.NET Framework)”應用程序。

但由於某種原因,在發布 RTM 升級應用程序時,我收到HTTP 錯誤 502.3 - Bad Gateway The specified CGI application遇到錯誤,伺服器終止了程序。

該站點可以從 Visual Studio 執行 IIS Express。

我該如何調試呢?誰有想法?

錯誤 502.3

網路配置

<?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>

項目.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. 閱讀本文並確保您已經涵蓋了它所說的所有內容。
  2. .\MyApp.exe從命令行執行已發布。那樣有用嗎?
  • 如果是這樣,您就知道您遇到了 IIS 集成問題。
  • 如果沒有,您就知道您遇到了應用程序問題。
  1. 更改stdoutLogEnabled="false"true然後檢查日誌stdoutLogFile=".\logs\stdout"。那裡的錯誤可能會告訴你一些事情。
  2. 在事件查看器中檢查您的 IIS 應用程序日誌。那裡的錯誤可能會告訴你一些事情。

事件查看器應用程序日誌

事件查看器應用程序日誌

如果你長時間執行一個任務,並且瀏覽器在 2 分鐘(預設請求時間)內沒有收到響應,你會得到這個錯誤。因為超時後,IIS 將替換應用程序以響應客戶端“錯誤網關”。

也許您應該在 web.config 中更改請求時間。

在system.webServer / aspNetCore部分中設置requestTimeout屬性以指定 ASP.NET Core 模組等待來自偵聽 %ASPNETCORE_PORT% 的程序的響應的持續時間。

  • requestTimeout必須以整分鐘為單位指定,否則預設為 2 分鐘。

像這樣:

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

引用自:https://stackoverflow.com/questions/39756042