我有一个ASP.NET Core 2 Web应用程序,它托管在Windows Server 2012上的IIS 10上,没有任何负载平衡和特殊配置。对于某些需要太长时间的MVC操作,我们会收到502 HTTP错误。
看到这个错误之后我很震惊,因为我没有任何代理服务器的配置等等。然后我记得ASP.NET Core在Kestrel上运行。所以我得出这样的结论:这里IIS扮演代理服务器的角色并将请求转发给Kestrel。所以我认为这与超时配置有某种关系,因为应用程序的其他部分工作得很好。我在SO上搜索过类似的问题,但没有找到解决方案。
答案 0 :(得分:6)
默认情况下,ASP.NET Core请求超时为2分钟,您可以通过设置文件中的requestTimeout更改它。查看更多here
requestTimeout可选的timespan属性。
指定ASP.NET核心模块将等待的持续时间 侦听%ASPNETCORE_PORT%的进程的响应。
默认值为" 00:02:00"。
requestTimeout必须仅在整分钟内指定,否则 它默认为2分钟。
答案 1 :(得分:4)
当数据量巨大并且需要更多时间执行网页时,我也遇到相同的错误,我更改了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