首页 文章

.NET 核心发布到 IIS - HTTP 错误 502.3 - 错误网关 - 指定的 CGI 应用程序遇到错误,服务器终止了该进程

提问于
浏览
18

我正在尝试向 IIS 发布一个.NET Core ASP.NET 网站,我从 RC2 升级到 RTM。

作为一个完整性检查,我成功地从 Visual Studio 2015 发布了 template/sample“ASP.NET 核心 Web 应用程序(.NET 框架)”应用程序。

但出于某种原因,当发布 RTM 升级的应用程序时,我得到HTTP 错误 502.3 - 错误的网关指定的 CGI 应用程序遇到错误,服务器终止了该进程.

该站点正在从 Visual Studio 运行 IIS Express。

我该怎么调试呢?有人有主意吗?

错误 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"
    ]
  ]
 }
}

3 回答

  • 11

    我该怎么调试呢?有人有主意吗?

    这有三个想法:

    • 读这个并确保你已经涵盖了它所说的一切。

    • 从命令行运行已发布的.\MyApp.exe。那样有用吗?

    • 如果是,您知道您有 IIS 集成问题。

    • 如果没有,您知道您有应用程序问题。

    • stdoutLogEnabled="false"更改为true,然后检查stdoutLogFile=".\logs\stdout"处的日志。 error(s)可能会告诉你一些事情。

    • 在事件查看器中检查 IIS 应用程序日志。 error(s)可能会告诉你一些事情。

    事件查看器应用程序日志

    事件查看器应用程序日志

  • 11

    如果您长时间运行任务,并且 Web 浏览器在 2 mins(the 默认请求时间内没有收到响应,则会出现此错误。因为在超时后,IIS 将替换应用程序以使用“Bad Gateway”响应客户端。

    也许您应该在 web.config 中更改请求时间。

    system.webServer/aspNetCore部分设置requestTimeout属性,以指定 ASP.NET 核心模块等待来自侦听%ASPNETCORE_PORT%的进程的响应的持续时间。

    • requestTimeout必须仅在整分钟内指定,否则默认为 2 分钟。

    像这样:

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

    解决方案对我不起作用,但做了什么:

    启用 Web 开发人员模式(在浏览器中按 F12 键)=> application tab =>然后删除所有 cookie。刷新页面并 vo:它有效。您也可以复制您的 URL 并粘贴到另一个未运行的浏览器任何 MVC 项目.

    我的项目在 Internet Explorer 和 Microsoft Edge 上工作,没有任何更改。也许这就是你错误的原因。

相关问题