Dot-Net
.NET Core 發佈到 IIS - HTTP 錯誤 502.3 - 網關錯誤 - 指定的 CGI 應用程序遇到錯誤,伺服器終止了程序
我正在嘗試將我從 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。
我該如何調試呢?誰有想法?
網路配置
<?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" ] ] } }
我該如何調試呢?誰有想法?
這裡有三個想法:
- 閱讀本文並確保您已經涵蓋了它所說的所有內容。
.\MyApp.exe從命令行執行已發布。那樣有用嗎?
- 如果是這樣,您就知道您遇到了 IIS 集成問題。
- 如果沒有,您就知道您遇到了應用程序問題。
- 更改
stdoutLogEnabled="false"為true然後檢查日誌stdoutLogFile=".\logs\stdout"。那裡的錯誤可能會告訴你一些事情。- 在事件查看器中檢查您的 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>

