How to increase request timeout in IIS?
如何在 IIS 7.0 中增加请求超时?在 IIS 6.0 的 ASP 配置设置中的应用程序选项卡下也是如此。我无法在 IIS 7.0
中找到 asp.net 配置部分
将此添加到您的 Web 配置中
1 2 3 | <system.web> <httpRuntime executionTimeout="180" /> </system.web> |
https://msdn.microsoft.com/en-us/library/e1f13641(v=vs.85).aspx
Optional TimeSpan attribute.
Specifies the maximum number of seconds that a request is allowed to
execute before being automatically shut down by ASP.NET.This time-out applies only if the debug attribute in the compilation
element is False. To help to prevent shutting down the application
while you are debugging, do not set this time-out to a large value.The default is"00:01:50" (110 seconds).
在 IIS 管理器中,右键单击站点并转到管理网站 -> 高级设置。在 Connection Limits 选项下,您应该会看到 Connection Time-out。
要增加请求超时,请将其添加到 web.config
1 2 3 | <system.web> <httpRuntime executionTimeout="180" /> </system.web> |
并为特定页面添加此
1 2 3 4 5 | <location path="somefile.aspx"> <system.web> <httpRuntime executionTimeout="180"/> </system.web> </location> |
.NET 1.x 的默认值为 90 秒。
.NET 2.0 及更高版本的默认 110 秒。
在 IIS >= 7 中,
示例配置:
1 2 3 4 5 6 7 8 9 | <configuration> <system.applicationHost> <webLimits connectionTimeout="00:01:00" dynamicIdleThreshold="150" headerWaitTimeout="00:00:30" minBytesPerSecond="500" /> </system.applicationHost> </configuration> |
供参考:有关 IIS 中这些设置的更多信息,请参见此处。此外,我无法通过 IIS 管理器的"配置编辑器"将此部分添加到 web.config,尽管在我添加它并搜索配置后它确实显示出来了。
以下提供了解决问题的步骤。
我知道这个问题是关于 ASP 的,但也许有人会觉得这个答案很有帮助。
如果您有 IIS 7.5 后面的服务器(例如 Tomcat)。就我而言,我有一个配置了 Tomcat 服务器的服务器场。
在这种情况下,您可以使用 IIS 管理器更改超时:
- 转到服务器场 -> {服务器名称} -> 代理
- 更改超时输入框中的值
- 单击应用(右上角)
或者您可以在配置文件中更改它:
- 打开 %WinDir%\\\\\\\\System32\\\\\\\\Inetsrv\\\\\\\\Config\\\\\\\\applicationHost.config
- 将服务器 webFarm 配置调整为类似于以下
示例:
1 2 3 4 5 6 7 8 | <webFarm name="${SERVER_NAME}" enabled="true"> <server address="${SERVER_ADDRESS}" enabled="true"> </server> <protocol timeout="${TIME}" /> </applicationRequestRouting> </webFarm> |
${TIME} 是 HH:mm:ss 格式(所以如果你想将它设置为 90 秒,那么将其设置为 00:01:30)
如果是 Tomcat(可能还有其他 servlet 容器),您必须记住更改 %TOMCAT_DIR%\\\\\\\\conf\\\\\\\\server.xml 中的超时时间(只需在 Connector 标签中搜索 connectionTimeout 属性,然后请记住它以毫秒为单位)
使用下面的Power shell命令来改变执行超时(Request Timeout)
Please note that I have given this for default web site, before using
these please change the site and then try to use this.
1 | Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/Default Web Site' -filter"system.web/httpRuntime" -name"executionTimeout" -value"00:01:40" |
或者,您可以使用下面的 C# 代码来做同样的事情
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | using System; using System.Text; using Microsoft.Web.Administration; internal static class Sample { private static void Main() { using(ServerManager serverManager = new ServerManager()) { Configuration config = serverManager.GetWebConfiguration("Default Web Site"); ConfigurationSection httpRuntimeSection = config.GetSection("system.web/httpRuntime"); httpRuntimeSection["executionTimeout"] = TimeSpan.Parse("00:01:40"); serverManager.CommitChanges(); } } } |
或者,您可以使用 JavaScript 来执行此操作。
1 2 3 4 5 6 7 | var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager'); adminManager.CommitPath ="MACHINE/WEBROOT/APPHOST/Default Web Site"; var httpRuntimeSection = adminManager.GetAdminSection("system.web/httpRuntime","MACHINE/WEBROOT/APPHOST/Default Web Site"); httpRuntimeSection.Properties.Item("executionTimeout").Value ="00:01:40"; adminManager.CommitChanges(); |
或者,您可以使用 AppCmd 命令。
1 | appcmd.exe set config"Default Web Site" -section:system.web/httpRuntime /executionTimeout:"00:01:40" |
对于 AspNetCore,它看起来像这样:
1 |
从这里