我正在尝试从 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。
- 这是一种很少使用的仅限管理员的方法,不需要优化/复杂化为异步或其他任何方法,除非这确实是唯一的方法。