【问题标题】:.NET Core 2.0 on Azure results in a 502.3 CGI ErrorAzure 上的 .NET Core 2.0 导致 502.3 CGI 错误
【发布时间】:2017-09-03 20:23:44
【问题描述】:

过去几天我试图找到以下错误消息的答案,该错误消息在 Azure Web App 托管上困扰着我的 .NET Core 2.0 应用程序:

当 CGI 应用程序未返回有效集合时会发生此错误 HTTP 标头,或者当代理或网关无法发送 请求到父网关。您可能需要获取网络跟踪或 如果不是 CGI 问题,请联系代理服务器管理员。

因为花了好几天才找到答案,所以我在这里发布我的解决方案。

在CGI错误旁边,我还在错误日志中发现了如下错误代码:0x80072ee2。这表明请求已超时。但是,Azure 有 4 分钟的超时限制,大约 1.5 分钟后出现错误。该应用程序设计为在 4 分钟内处理请求,因此不应发生超时错误。

【问题讨论】:

    标签: azure .net-core cgi


    【解决方案1】:

    我在阅读以下页面后找到了解决方案:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/?tabs=aspnetcore2x。在这个页面中IIS之间的关系 并解释了 Kestrel 引擎。虽然 Web 应用托管应该不同于 IIS 托管,但我怀疑 Azure 使用了很多 IIS 模块,因为有很多相似之处。

    github上的以下问题也是解决我问题的一部分:https://github.com/aspnet/IISIntegration/issues/311。在本期中,解释了在 IIS 旁边,Kestrel 也有 2 分钟的超时限制。在最初寻找解决方案时,我完全错过了那一点信息。更改 Kestrel 服务器的超时时间(可以在以下页面上找到:https://docs.microsoft.com/en-us/aspnet/core/hosting/aspnet-core-module)解决了我的问题,让请求在 2.5 分钟内运行。

    我后来用 Chrome 开发者工具检查了超时显示之前的确切持续时间,它似乎正好是 2 分钟,这应该是我的问题是 Kestrel 服务器超时的更早线索。

    【讨论】:

    • 嗨,非常感谢,我也遇到了同样的问题。在我的应用程序已经部署后,我可以通过编辑 web.config 文件来更改超时来修复它。您知道是否有可能在部署期间以某种方式进行此更改,以免每次都被覆盖?
    • 我记得在你的项目中添加一个特定的 web.config 就可以了。通常在部署期间会生成一个 web.config,除非您的项目中有一个也部署到 Web 应用程序。
    猜你喜欢
    • 1970-01-01
    • 2017-11-07
    • 1970-01-01
    • 2018-01-23
    • 1970-01-01
    • 1970-01-01
    • 2018-12-25
    • 1970-01-01
    • 2018-02-26
    相关资源
    最近更新 更多