如何在IIS中增加请求超时时间?

180

如何在IIS 7.0中增加请求超时时间?在IIS 6.0的应用程序选项卡下,可以在ASP配置设置中完成相同操作。但我找不到IIS 7.0中的ASP.NET配置部分。

8个回答

214

将以下内容添加到您的Web配置文件中

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

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

可选的 TimeSpan 属性。

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

只有当编译元素中的 debug 属性为 False 时才应用此超时。为了避免在调试时关闭应用程序,请不要将此超时设置为较大的值。

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


9
可以从IIS 7管理器GUI中设置吗? - Triynko
20
超时时间以秒为单位指定,默认为110秒。注意:仅当<compilation>元素中的debug属性设置为false时,此超时才适用! - Jowen
1
@Jowen:你太棒了!我几天前已经将调试模式更改为false,但没有将其与我一直收到的所有超时错误联系起来。现在我知道了。 - Doug S
请注意,executionTimeout的最大值也是TimeSpan的最大值(10675199.02:48:05.4775807),这比您所需的要多。 - Antoine Pelletier

85
在IIS管理器中,右键单击站点,转到管理Web站点->高级设置。在连接限制选项下,您应该会看到连接超时

7
这和请求超时是一样的吗?我正在尝试从一个XML文档迁移数据,但请求超时了。所以如果我增加连接超时时间,这个问题会得到解决吗? - Dotnet Rocks
14
我不认为这是正确的,如果开启了“HTTP Keep-Alive”,那么这个时间设置适用于它,意思是连接会保持多长时间。我认为这与“请求超时”(即IIS等待页面执行的时间)无关。 - visual
2
我认为在某些情况下这是正确的答案,比如上传大文件。在等待上传时, - David Hammond
1
我刚在一个托管在IIS 7的网站上进行了检查,它被设置为480秒,并且上传脚本运行时间超过了700秒,所以我认为这不是正确的选项。 - Avenger

57

要增加请求超时时间,请将以下内容添加到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秒。


4
谢谢您提供该位置信息,您因此获得了一个+1。 - Gonza Oviedo
1
我认为这个答案中有一个错别字,因为默认值对我来说似乎配置为120秒。 - Tobias Twardon

33

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

  1. 打开您的IIS
  2. 进入"站点"选项。
  3. 右键单击鼠标。
  4. 然后打开属性"管理网站"。
  5. 然后点击"高级设置"。
  6. 展开"连接限制"部分,在这里您可以设置您的"连接超时时间"

输入图像描述


1
了解更多信息的链接:https://learn.microsoft.com/zh-cn/previous-versions/dotnet/netframework-2.0/e1f13641(v=vs.80) - JPatel
1
连接超时不等于请求超时。 - The incredible Jan
增加 - 数据库超时问题也会增加。 - Anjan Kant

32

IIS 7及以上版本中,<webLimits>部分已经替代了IIS 6元数据设置中的ConnectionTimeoutHeaderWaitTimeoutMaxGlobalBandwidthMinFileBytesPerSec

配置示例:

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

供参考:有关IIS这些设置的更多信息可以在这里找到。此外,我无法通过IIS管理器的“配置编辑器”将此部分添加到web.config中,但一旦我添加并搜索配置后,它就会显示出来。


6
这意味着这个替代项取代了“连接超时”,而不是httpRuntime的“执行超时”。 - user2864740

11

我知道问题是关于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中更改超时时间(只需搜索Connector标记中的connectionTimeout属性,并记住它是以毫秒为单位指定的)


2
请注意,您应该只发布与所提问题直接相关的答案。由于这个问题纯粹涉及IIS,包含有关Tomcat的信息的答案并不相关。 - Andrew Barber
10
在这种情况下,我认为答案是相关的,因为此处指定的用例(使用IIS应用程序请求路由将流量路由到另一台服务器)与IIS有关。该设置也可以在IIS管理器中进行配置。顺便说一下,这个答案帮助我解决了应更改哪个请求超时时间的问题。(因为在IIS管理器中有很多超时设置) - Jensen Ching

4

使用以下PowerShell命令更改执行超时时间(请求超时)

请注意,我已为默认网站提供此命令。在使用之前,请更改站点并尝试使用此命令。

 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" 

为什么要这么努力? - The incredible Jan

3

对于AspNetCore,它看起来是这样的:

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

从这里


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接