【问题标题】:How to increase request timeout in IIS?如何在 IIS 中增加请求超时?
【发布时间】:2010-03-10 04:03:46
【问题描述】:

如何在 IIS 7.0 中增加请求超时?在 IIS 6.0 的 ASP 配置设置中的应用程序选项卡下也是如此。我在 IIS 7.0 中找不到 asp.net 配置部分

【问题讨论】:

    标签: asp.net iis iis-7 web-config iis-7.5


    【解决方案1】:

    将此添加到您的网络配置中

    <system.web>
        <httpRuntime executionTimeout="180" />
    </system.web>
    

    https://msdn.microsoft.com/en-us/library/e1f13641(v=vs.85).aspx

    可选的 TimeSpan 属性。

    指定允许请求的最大秒数 在被 ASP.NET 自动关闭之前执行。

    此超时仅适用于编译中的调试属性 元素为假。帮助防止关闭应用程序 在调试时,不要将此超时设置为很大的值。

    默认值为“00:01:50”(110 秒)。

    【讨论】:

    • 这可以从 IIS 7 管理器 GUI 中设置吗?
    • 超时时间以秒为单位,默认为110秒。注意:此超时仅适用于 元素中的 debug 属性设置为 false!
    • @Jowen:你太棒了!我早些时候将 debug 更改为 false 几天前,并没有将它与我收到的所有超时错误相关联。现在我知道了。
    • 请注意,executionTimeout 的最大值也是 TimeSpan (10675199.02:48:05.4775807) 的最大值,这...比你需要的更多
    【解决方案2】:

    在 IIS 管理器中,右键单击站点并转到 管理网站 站点 -> 高级设置。在 Connection Limits 选项下,您应该会看到 Connection Time-out

    【讨论】:

    • 这个和请求超时一样吗。我正在尝试从 xml 文档和请求超时迁移数据。因此,如果我增加连接超时,这将得到解决。
    • 我认为这是不正确的,如果启用了“HTTP Keep-Alive”,则此时间设置适用于它,这意味着连接将保持多长时间,我认为这与“无关”请求超时'(iis 等待页面执行的时间)..
    • 我认为这在某些情况下是正确的答案,例如上传大文件。在等待上传时,
    【解决方案3】:

    要增加请求超时,请将其添加到 web.config

    <system.web>
        <httpRuntime executionTimeout="180" />
    </system.web>
    

    并为特定页面添加此

    <location path="somefile.aspx">
        <system.web>
            <httpRuntime executionTimeout="180"/>
        </system.web>
    </location>
    

    .NET 1.x 的默认值为 90 秒。

    .NET 2.0 及更高版本的默认 110 秒。

    【讨论】:

    • 您已通过该位置信息获得 +1
    【解决方案4】:

    在 IIS >= 7 中,&lt;webLimits&gt; 部分已替换 ConnectionTimeoutHeaderWaitTimeoutMaxGlobalBandwidthMinFileBytesPerSec IIS 6 元数据库设置。

    示例配置:

    <configuration>
       <system.applicationHost>
          <webLimits connectionTimeout="00:01:00"
             dynamicIdleThreshold="150"
             headerWaitTimeout="00:00:30"
             minBytesPerSecond="500"
          />
       </system.applicationHost>
    </configuration>
    

    供参考:有关 IIS can be found here 中这些设置的更多信息。此外,我无法通过 IIS 管理器的“配置编辑器”将此部分添加到 web.config,但在我添加它并搜索配置后它确实显示出来了。

    【讨论】:

    • 这取代了ConnectionTimeout,而不是httpRuntime的executionTimeout
    【解决方案5】:

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

    1. 打开您的 IIS
    2. 转到“网站”选项。
    3. 鼠标右键。
    4. 然后打开属性“管理网站”。
    5. 然后点击“高级设置”。
    6. 展开“连接限制”部分,您可以在此处设置“连接超时

    【讨论】:

    【解决方案6】:

    我知道这个问题是关于 ASP 的,但也许有人会觉得这个答案很有帮助。

    如果您有 IIS 7.5 后面的服务器(例如 Tomcat)。就我而言,我有一个配置了 Tomcat 服务器的服务器场。 在这种情况下,您可以使用 IIS 管理器更改超时:

    • 转到服务器场 -> {服务器名称} -> 代理
    • 更改超时输入框中的值
    • 点击应用(右上角)

    或者您可以在配置文件中更改它:

    • 打开 %WinDir%\System32\Inetsrv\Config\applicationHost.config
    • 将服务器webFarm配置调整为类似如下

    例子:

    <webFarm name="${SERVER_NAME}" enabled="true"> 
      <server address="${SERVER_ADDRESS}" enabled="true">
        <applicationRequestRouting httpPort="${SERVER_PORT}" />
      </server>
      <applicationRequestRouting>
        <protocol timeout="${TIME}" />
      </applicationRequestRouting>
    </webFarm>
    

    ${TIME} 采用 HH:mm:ss 格式(因此,如果您想将其设置为 90 秒,则将其设置为 00:01:30)

    如果是 Tomcat(可能还有其他 servlet 容器),您必须记住在 %TOMCAT_DIR%\conf\server.xml 中更改超时(只需搜索 connectionTimeout Connector 标记中的 strong> 属性,并记住它是以 毫秒 为单位指定的)

    【讨论】:

    • 请注意,您应该只发布与所提问题直接相关的答案。由于这个问题纯粹是关于 IIS 的,所以关于 Tomcat 的信息的答案确实不相关。
    • 在这种情况下,我认为答案是相关的,因为这里指定的用例(使用 IIS 应用程序请求路由路由到另一台服务器)是关于 IIS 的。此处的设置也可以在 IIS 管理器中进行配置。 FWIW,这个答案帮助我解决了我应该更改的请求超时。 (由于 IIS 管理器中有很多超时设置)
    【解决方案7】:

    使用下面的 Power shell 命令更改执行超时(Request Timeout)

    请注意,在使用之前,我已将其用于默认网站 这些请更改网站,然后尝试使用它。

     Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/Default Web Site'  -filter "system.web/httpRuntime" -name "executionTimeout" -value "00:01:40"
    

    或者,您可以使用下面的 C# 代码来做同样的事情

    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 来执行此操作。

    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 命令。

    appcmd.exe set config "Default Web Site" -section:system.web/httpRuntime /executionTimeout:"00:01:40" 
    

    【讨论】:

      【解决方案8】:

      对于 AspNetCore,它看起来像这样:

      <aspNetCore requestTimeout="00:20:00">
      

      From here

      【讨论】:

        猜你喜欢
        • 2018-11-05
        • 2013-01-23
        • 1970-01-01
        • 1970-01-01
        • 2017-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多