作者:保佑欣疼你的芯疼 | 2023-08-30 12:03
我想在我的应用程序中增加特定控制器操作的请求超时.我知道我可以在web.config中为整个应用程序执行此操作,但我宁愿在这一个操作上更改它.
Web.config示例:
我该怎么做?
1> AnthonyWJone..:
您可以在控制器中以编程方式设置: -
HttpContext.Current.Server.ScriptTimeout = 300;
将超时设置为5分钟而不是默认的110秒(奇怪的是什么?)
随着AsyncController的出现,值得记住的是,为了获得异步请求的类似效果,您应该使用[AsyncTimeout]属性.
@jhilden HttpContext是基于每个请求实例化的,所以它会在下一个请求时回到默认值
我对这个答案的问题是,它究竟只会影响它所处的一个动作?因此,在请求完成后,该设置是否会被放回以备将来的所有请求?
你可能想添加HttpContext.Current('Current'缺失)
我得到:"httpcontext不包含当前的定义".我正在使用.NET Core 2.0.知道如何解决这个问题吗?
2> 小智..:
可能最好在web.config中设置这样的值而不是控制器.可配置选项的硬编码被认为是有害的.
-1正如OP所描述的那样,硬编码对于特殊情况是可以的.听起来特定动作需要与其他动作不同的超时,因此在动作内部进行硬编码听起来像是一个好地方.
executionTimeout对MVC不起作用 - 这是错误的答案.见这里:http://forums.asp.net/p/1715081/4723882.aspx?Re + web + config+executionTimeout+not+working+in+ASP+NET+MVC
这不是最正确的答案,因为它具有更改所有其他控制器操作的执行超时的副作用.
请注意,如果启用了调试模式,则会忽略此项目http://msdn.microsoft.com/en-us/library/vstudio/e1f13641(v=vs.100).aspx executionTimeout可选的Int32属性.指定在ASP.NET自动关闭之前允许执行请求的最大秒数.仅当编译元素中的debug属性为False时,此超时才适用.因此,如果debug属性为True,则不必将此属性设置为较大的值,以避免在调试时关闭应用程序.
3> Patrick Mich..:
我不得不使用.NET 4.5添加"当前":
HttpContext.Current.Server.ScriptTimeout = 300;