ASP.NET MVC和httpRuntime executionTimeout

时间:2009-01-29 16:27:15

标签: asp.net asp.net-mvc configuration timeout httpruntime

我想为ASP.NET MVC应用程序的子部分增加httpRuntime executionTimeout

在常规Web应用程序中,您可以使用:

<configuration>
  <location path="UploadPage.aspx">
    <httpRuntime executionTimeout="600"/>
  </location>
</configuration>

然而,ASP.NET MVC中确实没有“文件夹”的概念,那么我该如何做呢?

让我们假设ASP.NET MVC路径是/Images/Upload,带有ImagesController和Upload Action。

5 个答案:

答案 0 :(得分:51)

您可以在&lt; location&gt;中包含整个MVC路径(控制器和操作)。标签的路径属性。这样的事情应该有效:

<location path="Images/Upload">
    <system.web>
        <httpRuntime executionTimeout="600" />
    </system.web>
</location>

答案 1 :(得分:8)

Chris Hynes solution有效!请务必不要在您的路径中包含〜/。

This answer详细说明了另一种方法 - 只需在操作代码中设置ScriptTimeout

public ActionResult NoTimeout()
{
    HttpContext.Server.ScriptTimeout = 60 * 10; // Ten minutes..
    System.Threading.Thread.Sleep(1000 * 60 * 5); // Five minutes..
    return Content("NoTimeout complete", "text/plain"); // This will return..
}

答案 2 :(得分:1)

如果操作在默认控制器中,则主页/上传不起作用,您只需输入操作名称即可。                                         

答案 3 :(得分:1)

我注意到您特意尝试增加上传页面的超时时间。我使用名为plupload的“chunking”上传器取得了一些成功。可以设置相对简单的MVC动作来接收上传的块,在接收时附加每个块。使用小块,您不需要增加超时。当然可能存在一些浏览器限制,但是

http://plupload.com/

答案 4 :(得分:0)

看一下AsyncController,如果你使用它,你就可以在一个动作方法上设置一个AsyncTimeout属性,这样你就可以超时一个请求。

帮助我的链接: http://forums.asp.net/p/1564303/3922462.aspx http://dariosantarelli.wordpress.com/2010/10/16/asp-net-mvc-2-handling-timeouts-in-asynchronous-controllers/