如何在ASP.NET中优化文件下载?

时间:2009-11-17 14:07:24

标签: asp.net download

我有ASP.NET应用程序,允许用户在输入密码时下载文件。我使用下面的代码将文件发送给用户:

Context.Response.Clear();
Context.Response.ContentType = "application/pdf";
Context.Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName);
Context.Response.BinaryWrite(File.ReadAllBytes(fileName));
Context.Response.Flush();
Context.Response.Close();   

问题是如果文件超过1mb或者许多用户同时下载文件,则下载速度会变得非常慢。有可能以某种方式优化代码以获得更好的性能吗?

2 个答案:

答案 0 :(得分:2)

您可以使用Response.TransmitFile(/* Your file */);代替Response.BinaryWrite(/* Your file */);

TransmitFile() - Method将数据写入HTTP输出流,而不将其存储在内存中。

答案 1 :(得分:1)

为什么要手动管理下载?为什么不在成功登录后显示的页面上放置相应PDF文件的链接?这将释放ASP.NET线程,因此您不必使用它们来管理文件下载。 IIS仍然需要提供服务,但我认为这会显着降低您的开销。

您是否担心文件名被暴露?如果是,请回复 - 您可以探索其他一些选项。