【问题标题】:Where to set HttpContext.Current.Server.ScriptTimeout in controller?在控制器中哪里设置 HttpContext.Current.Server.ScriptTimeout?
【发布时间】:2018-01-15 03:04:16
【问题描述】:

在某些具有此超时值的 ASP.NET 控制器上,在哪里设置请求超时?是在控制器的构造函数中还是其他地方?

 System.Web.HttpContext.Current.Server.ScriptTimeout = 50;

【问题讨论】:

    标签: .net asp.net-mvc connection-timeout


    【解决方案1】:

    由于 ScriptTimeout 是应用程序范围内的静态设置,因此设置它的唯一合理位置是在应用程序启动时。

    或者,您可以在web.config 文件中设置它。

    <configuration>
    ...
    
    <system.web>
       <httpRuntime executionTimeout="600" />
    

    参考:http://www.beansoftware.com/ASP.NET-FAQ/Change-Script-Timeout.aspx

    【讨论】:

    • 请记住 executionTimeout 的值以秒为单位,并且只有在标签 (在 下)的“debug”属性设置为“ false”,如this answer 中所述。 Documentation
    • 这是不正确的。设置ScriptTimeout 仅对当前请求有效。例如。在评论 ScriptTimeout stackoverflow.com/a/579599/1059776 中也提到了
    【解决方案2】:

    如果您想将超时应用于控制器设置ScriptTimeout 的所有操作似乎是一个不错的选择。

    如果上传持续时间可能已经超过应用程序范围的executionTimeout 设置,则例外情况。在这种情况下,超时发生在执行到达控制器之前,因此构造函数将没有机会进行设置。

    这种情况下的解决方法是在分析HttpContext.Current.Request.Path 后将ScriptTimeout 设置为Application_BeginRequest

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-10
      • 1970-01-01
      • 2018-08-25
      相关资源
      最近更新 更多