Azure ASP.NET MVC:避免约3分钟的请求超时?

时间:2013-07-24 22:37:47

标签: asp.net-mvc azure

我正在尝试从ASP.NET MVC控制器下载一个100MB的文件,但是我会在3-4分钟后得到超时(它会有所不同)。

    public ActionResult DownloadMyFile() {
        Server.ScriptTimeout = 60 * 60; // 1 hr timeout for downloading myfile

        Response.AddHeader("Content-Disposition", "attachment; filename=myfile");
        Response.BufferOutput = false;

        this.CloudBlobContainer
              .GetBlobReference("myfile")
              .DownloadToStream(Response.OutputStream);

        return new EmptyResult();
    }
  • 这不会发生在我的本地机器上直接运行它作为ASP.NET MVC应用程序,我怀疑这是在azure堆栈(IIS服务器???)中的东西。
  • 超时似乎是基于时间的,而不是基于文件大小的。
  • 超时不会向浏览器返回错误,他们认为他们获得了整个文件并停止了成功报告(!!!)。
  • 该文件目前托管在Azure存储上,但未来可能来自其他来源,因此我不想只重定向到blob存储URL。
  • 这是一种很少使用的仅管理方法,不需要优化/复杂化为异步或其他任何方法,除非这是实现它的唯一方法。

1 个答案:

答案 0 :(得分:0)

您可以尝试在web.config中增加执行超时。

以下将超时更改为1小时(3600秒):

<system.web>
  <httpRuntime 
      executionTimeout="3600"
    />

The default is 110 seconds