长ASP.NET操作的IIS请求超时
当我运行一个长时间的操作时,遇到来自IIS的请求超时。 在我的ASP.NET应用程序正在处理数据的背后,但正在处理的logging数很大,因此操作需要很长时间。
但是,我认为IIS会超时。 这是IIS或ASP.NET会话的问题吗?
提前致谢
如果要延长执行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
configuration元素的web.config
文件中configuration:
<!-- Increase script timeout to five minutes --> <httpRuntime executionTimeout="300" ... other configuration attributes ... />
请注意根据MSDN文档 :
“只有在编译元素中的debugging属性为False的情况下,此超时才适用。因此,如果debug属性为True,则不必将此属性设置为较大的值,以避免在debugging时closures应用程序。 “
如果你已经这样做了,但是发现你的会话正在到期,那么增加ASP.NET HttpSessionState.Timeout
值:
例如:
// Increase session timeout to thirty minutes Session.Timeout = 30;
这个值也可以在sessionState
configuration元素的web.config
文件中configuration:
<configuration> <system.web> <sessionState mode="InProc" cookieless="true" timeout="30" /> </system.web> </configuration>
如果您的脚本需要花费几分钟时间才能执行,并且有许多并发用户,请考虑将页面更改为“ asynchronous页面” 。 这将增加您的应用程序的可扩展性。
另一种方法是,如果您有pipe理员对服务器的访问权限,则应将此长时间运行的操作视为实现计划任务或Windows服务的候选项。
由@Kev完美而详尽的回答!
由于我只在WebForms应用程序的一个pipe理页面中进行了长时间的处理,所以我使用了代码选项。 但为了让生产能够临时快速修复,我在web.config的<location>
标签中使用了configuration版本。 这样我的pipe理/处理页面就有了足够的时间,而最终用户的页面和这样的页面保持了他们以前的行为。
下面我给你configuration你的Google员工需要相同的快速修复。 你当然应该使用其他值,而不是我的'4小时'的例子,但请注意会话时间是在几分钟内,而请求executionTimeout
在几秒钟内!
而且 – 既然已经是2015年了 – 对于一个NON-quickfix,你应该尽可能地使用.Net 4.5的asynchronous/等待 ,而不是在2010年KEV回答的时候使用.NET 2.0的ASYNC页面:)。
<configuration> ... <compilation debug="false" ...> ... other stuff .. <location path="~/Admin/SomePage.aspx"> <system.web> <sessionState timeout="240" /> <httpRuntime executionTimeout="14400" /> </system.web> </location> ... </configuration>
我在这里发布这个,因为我已经花了3和4个小时,而且我只find了上面的那些答案,即添加executionTime
,但它不能解决问题您使用的是ASP .NET Core 。 对此,这将工作:
在web.config文件中,在aspNetCore
节点上添加requestTimeout
属性。
<system.webServer> <aspNetCore requestTimeout="00:10:00" ... (other configs goes here) /> </system.webServer>
在这个例子中,我将这个值设置为10分钟。
参考: https : //docs.microsoft.com/en-us/aspnet/core/hosting/aspnet-core-module#configuring-the-asp-net-core-module
删除~
位置的字符如此
path="~/Admin/SomePage.aspx"
变
path="Admin/SomePage.aspx"