【问题标题】:ASP.NET Core deployed on IIS returns 502 Error for long running requests部署在 IIS 上的 ASP.NET Core 对长时间运行的请求返回 502 错误
【发布时间】:2018-02-19 15:41:28
【问题描述】:

我有一个 ASP.NET Core 2 Web 应用程序,它托管在 Windows Server 2012 上的 IIS 10 上,没有任何负载平衡和特殊配置。对于一些耗时过长的 MVC 操作,我们会收到 502 HTTP 错误。

看到这个错误后我很震惊,因为我没有任何代理服务器等的配置。然后我记得 ASP.NET Core 是在 Kestrel 上运行的。所以我得出这个结论,这里IIS扮演代理服务器的角色,将请求转发给Kestrel。所以我认为这在某种程度上与超时配置有关,因为应用程序的其他部分运行良好。我已经搜索了关于 SO 的类似问题,但没有找到解决方案。

【问题讨论】:

标签: c# asp.net iis asp.net-core


【解决方案1】:

默认情况下,ASP.NET Core 请求超时为 2 分钟,您可以通过设置文件中的 requestTimeout 更改它。查看更多here

requestTimeout 可选的时间跨度属性。

指定 ASP.NET Core 模块将等待的持续时间 监听 %ASPNETCORE_PORT% 的进程的响应。

默认值为“00:02:00”。

requestTimeout 必须以整分钟为单位指定,否则 默认为 2 分钟。

【讨论】:

  • 任何其他想法......这并不能解决我的问题,请求显然会在配置的时间长度下超时并出现相同的错误。
【解决方案2】:

当数据很大并且需要更多时间来执行网页时,我会遇到同样的错误,我在 web.config 中更改了 .netcore 的超时值

<?xml version="1.0" encoding="utf-8"?>
  <configuration>
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" 
           resourceType="Unspecified"/>
      </handlers>
      <aspNetCore requestTimeout="00:20:00"  processPath="%LAUNCHER_PATH%" 
          arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" 
         stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
    </system.webServer>
  </configuration>

我在现有的 web.config 文件中添加了requestTimeout="00:20:00",它可以正常工作。

参考这个url

【讨论】:

    猜你喜欢
    • 2016-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-09
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    相关资源
    最近更新 更多