我有一个aspx页面,其中包含的代码可能需要5分钟或更长时间在服务器上执行。所以我需要延长请求超时之前的时间。
把这个放在网站的web.config中有什么区别:
<location path="~/MyPage.aspx">
<system.web>
<httpRuntime executionTimeout="600"/>
</system.web>
</location>
字符串
并将其放在页面后面的代码中:
protected void Page_Load(object sender, EventArgs e)
{
Page.Server.ScriptTimeout = 600;
}
型
4条答案
按热度按时间dzhpxtsq1#
至于ASP.NET的
<httpRuntime>
配置中的executionTimeout
设置不起作用的问题。关于这个属性的文档确实不是很清楚。造成这个问题的原因有以下几个:1.只有当我们在 web.config 中将“debug”设置为false时,此设置才会生效,如:
字符串
当设置为
debug="true"
模式时,运行时将忽略超时设置。1.即使我们设置了
debug="false"
,当值很小时,executionTimeout
仍然会有一定的延迟。实际上,我们建议不要将超时设置为小于1.5分钟。当我们将超时设置为小于1分钟时,延迟将从5秒到15秒不等。例如,如果我们设置executionTimeout="5"
,页面超时可能需要大约15秒。Server.ScriptTimeout
属性是经典ASP中使用的COM接口。ASP.NET的executionTimeout
是ASP.NET中ScriptTimeout
的替代品,因此我们不再需要在ASP.NET中使用脚本语言。另外,至于让脚本总是在2秒后终止,恐怕在ASP.NET的运行时设置中没有办法,ASP.NET的运行时请求处理管理达不到这个精度,2秒太小了,可能会导致性能很差,无法监控这么小的间隔。
如果我们确实需要让某个处理超时,我们可以考虑将超时逻辑放在上面的应用程序代码级别。例如,如果我们正在执行
SqlCommand
,我们可以设置SqlCommand
的执行超时。或者如果我们正在页面代码中执行一个xmlc调用,我们可以为xmlc调用设置超时。vuktfyat2#
从这个页面,一些官方信息:https://msdn.microsoft.com/en-us/library/system.web.httpserverutility.scripttimeout%28v=vs.110%29.aspx
可以通过设置元素的executionsign属性,在Web.config文件中设置Scriptdate属性。使用Scriptdate属性以编程方式设置超时优先于Web.config设置。
我只是想,注意到微软说“executionsocket”和“Scriptocket”是同一个属性可能是有益的。
nkkqxpd93#
执行命令
可选TimeSpan属性。指定在ASP.NET自动关闭请求之前允许执行的最大秒数。仅当compilation元素中的debug属性为False时,此超时值才适用。为了帮助防止在调试时关闭应用程序,请不要将此超时值设置为较大的值。默认值为“00:01:50”(110秒)。
脚本
可以使用AspScriptSeconds元数据属性为Web服务或Web服务器设置默认ScriptSeconds。ScriptSeconds属性不能设置为小于元数据中指定的值。例如,如果NumSeconds设置为10,而元数据设置包含默认值90秒,则脚本将在90秒后超时。但是,如果NumSeconds设置为100,脚本将在100秒后超时。
mbzjlibv4#
关键的区别是一个是针对整个网站,另一个你可以只在页面级别设置。
它们是相同的设置。大多数情况下使用
web.config
。如果您需要对特定页面执行较长时间(可能会运行较长的报表或批处理作业),请在页面级别设置此设置:字符串