当前位置:  开发笔记 > 后端 > 正文

如何在asp.net mvc应用程序中为一个控制器操作设置请求超时

如何解决《如何在asp.netmvc应用程序中为一个控制器操作设置请求超时》经验,为你挑选了3个好方法。

我想在我的应用程序中增加特定控制器操作的请求超时.我知道我可以在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;

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有