长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; 

这个值也可以在httpRuntimeconfiguration元素的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; 

这个值也可以在sessionStateconfiguration元素的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"