增加ASP.NET应用程序的应用超时时间

4
在我的应用程序中,我进行了一个服务调用,可能需要长达2分钟才能返回值。(过程涉及多个数据库)
在调用此方法时,应用程序超时了。
我已经在web config中设置了以下内容,但是当在IIS上托管时仍然会出现错误。
<system.web>
    <compilation debug="true" targetFramework="4.0" />
    <sessionState timeout="40"></sessionState>
    <httpRuntime maxRequestLength="2147483647" executionTimeout="3600"/>

</system.web>

我已经在服务的web.config文件中设置了相同的执行超时时间,请帮助我增加应用程序的超时时间。


你的 web.config 文件中是否有服务的绑定部分?如果有,请贴出来。 - webnoob
如果返回需要2分钟,那么你的设计就很糟糕了。解决这个问题,将工作放在后台进行,保持缓存等等... - Aristos
@Webnoob,我并不是在假设什么,我只是说这是一个糟糕的设计。如果你不理解这一点,那么你可能也会这样做,因此你反应过度了。最好坐回你的椅子上,问问自己,“为什么这是一个糟糕的设计?这个人知道什么我不知道,我需要学习。” - Aristos
@Aristos - 如果服务的另一端的进程需要5分钟才能完成(而您无法控制),除了等待其完成,还有哪些选项? - webnoob
@webnoob 看来有一种方法可以等待那5分钟的工作完成。:) 实际上,我已经想出了至少2-3种方法。最容易实现的方法是在后台运行该工作,在此结束后显示结果。 - Aristos
显示剩余2条评论
3个回答

5

你尝试过在httpRuntime部分设置shutdownTimeout值吗?空闲应用程序的默认关闭时间为90秒。

<httpRuntime maxRequestLength="2147483647" shutdownTimeout="360" executionTimeout="3600"/>

MSDN参考: HttpRuntimeSection.ShutdownTimeout 属性

该属性获取或设置应用程序域在关闭之前等待未完成请求的时间。默认值为 90 秒。此属性仅适用于 IIS 7.0 和更高版本。


1
<compilation debug="false" targetFramework="4.0" />

设置debug="false"可以解决问题。

来自MSDN:

执行超时:可选的Int32属性。 指定请求在被ASP.NET自动关闭之前允许执行的最大秒数。 仅当编译元素中的debug属性为False时,此超时才适用。因此,如果debug属性为True,则不必将此属性设置为大值以避免在调试时应用程序关闭。 默认值为110秒。 注意: 在.NET Framework 1.0和1.1中,默认值为90秒。


尝试将调试设置为false。仍然无效,应用程序在90秒内超时。 - smv
当设置debug=true时,executionTimeout被忽略。 - user797717

0
<asp:ScriptManager ID="Scriptmanager1" runat="server" AsyncPostBackTimeout="1200" />

在脚本管理器中,用于更新客户端浏览器的回调函数有一个默认的超时时间(90秒)。所以,如果你的后台代码正在运行完整页面但浏览器没有更新,那么这个标签可能会有所帮助。


你应该添加一些文本来解释这个答案的作用以及为什么它提供了解决特定问题的方案。代码转储很少对其他人有用。 - Paritosh

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