2

我正在尝试从 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 应用程序运行,我怀疑这是天蓝色堆栈(IIS 服务器???)中的东西。
  • 超时似乎是基于时间的,而不是基于文件大小的。
  • 超时不会向浏览器返回错误,他们认为他们得到了整个文件并停止并报告成功(!!!)。
  • 该文件当前托管在 Azure 存储上,但将来可能来自其他来源,因此我不想只重定向到 blob 存储 URL。
  • 这是一种很少使用的仅限管理员的方法,不需要优化/复杂化为异步或其他任何方法,除非这确实是唯一的方法。
4

1 回答 1

0

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

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

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

默认值为 110 秒

于 2013-07-24T22:56:09.043 回答