关于asp.net:如何在IIS中增加请求超时?

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 中,<webLimits> 部分已替换 ConnectionTimeoutHeaderWaitTimeoutMaxGlobalBandwidthMinFileBytesPerSec IIS 6 元数据库设置。

示例配置:

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,尽管在我添加它并搜索配置后它确实显示出来了。


以下提供了解决问题的步骤。

  • 打开你的 IIS
  • 转到"站点"选项。
  • 鼠标右键。
  • 然后打开属性"管理网站"。
  • 然后点击"高级设置"。
  • 展开"连接限制"部分,您可以在此处设置"连接超时"
  • enter


    我知道这个问题是关于 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
     

    从这里