IIS请求超时ASP.NET操作

时间:2010-09-30 09:06:59

标签: asp.net iis iis-6 httprequest

当我运行长操作时,我遇到IIS的请求超时。在我的ASP.NET应用程序处理数据的场景后面,但正在处理的记录数量很大,因此操作需要很长时间。

但是,我认为IIS会话超时。这是IIS或ASP.NET会话的问题吗?

提前致谢

4 个答案:

答案 0 :(得分:138)

如果要延长ASP.NET脚本执行所允许的时间,请增加Server.ScriptTimeout值。 .NET 1.x的默认值为90秒,.NET 2.0及更高版本的默认值为110秒。

例如:

// Increase script timeout for current page to five minutes
Server.ScriptTimeout = 300;

也可以在httpRuntime配置元素的web.config文件中配置此值:

<!-- Increase script timeout to five minutes -->
<httpRuntime executionTimeout="300" 
  ... other configuration attributes ...
/>

enter image description here

请注意MSDN documentation

  

“此超时仅适用于编译中的debug属性   元素是假的。因此,如果debug属性为True,则执行此操作   不必将此属性设置为较大的值以避免   在调试时关闭应用程序。“

如果你已经这样做但发现你的会话即将到期,那就增加 ASP.NET HttpSessionState.Timeout值:

例如:

// Increase session timeout to thirty minutes
Session.Timeout = 30;

也可以在web.config配置元素的sessionState文件中配置此值:

<configuration>
  <system.web>
    <sessionState 
      mode="InProc"
      cookieless="true"
      timeout="30" />
  </system.web>
</configuration>

如果您的脚本需要几分钟才能执行,并且有许多并发用户,请考虑将页面更改为Asynchronous Page。这将提高应用程序的可伸缩性。

另一种选择,如果您具有对服务器的管理员访问权限,则将此长时间运行的操作视为实现作为计划任务或Windows服务的候选者。

答案 1 :(得分:20)

来自@Kev的伟大而详尽的回答!

由于我只在WebForms应用程序的一个管理页面中进行了长时间处理,因此我使用了代码选项。但为了允许临时快速修复生产,我在web.config中的<location>标记中使用了配置版本。通过这种方式,我的管理/处理页面获得了足够的时间,而最终用户的页面则保留了过时的行为。

下面我为您提供配置Google员工需要相同的快速修复程序。你应该使用除我的4小时以外的其他价值观。例如,但 DO 请注意,会话timeOut只需几分钟,而请求executionTimeout只需几秒钟!

而且 - 自2015年以来 - 对于NON-quickfix,你应该尽可能使用.Net 4.5&#39; async/await,而不是.NET 2.0&#39 ;当ASV在2010年回答时,ASYNC页面是最先进的页面:)。

<configuration>
    ... 
    <compilation debug="false" ...>
    ... other stuff ..

    <location path="~/Admin/SomePage.aspx">
        <system.web>
            <sessionState timeout="240" />
            <httpRuntime executionTimeout="14400" />
        </system.web>
    </location>
    ...
</configuration>

答案 2 :(得分:7)

我在这里张贴这个,因为我花了3到4个小时,而且我只找到了上面那些答案,那就说添加{{1}但是,在您使用 ASP .NET Core 的情况下,它并没有解决问题。对于它,这将起作用:

在web.config文件中,在executionTime节点添加requestTimeout属性。

aspNetCore

在此示例中,我将值设置为10分钟。

参考:https://docs.microsoft.com/en-us/aspnet/core/hosting/aspnet-core-module#configuring-the-asp-net-core-module

答案 3 :(得分:-6)

删除位置中的~个字符 所以

path="~/Admin/SomePage.aspx"

变为

path="Admin/SomePage.aspx"