部署在IIS上的ASP.NET Core会为长时间运行的请求返回502错误

Mus*_*aie 4 c# asp.net iis asp.net-core

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

在此输入图像描述

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

Osc*_*car 6

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

requestTimeout可选的timespan属性.

指定ASP.NET核心模块等待来自侦听%ASPNETCORE_PORT%的进程的响应的持续时间.

默认值为"00:02:00".

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


Far*_*med 5

当数据很大并且需要更多时间来执行网页时,我遇到了同样的错误,我在 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>
Run Code Online (Sandbox Code Playgroud)

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

参考去这个网址