在IIS + ASP.NET(MVC)中提供大量下载的指南

时间:2011-12-06 12:11:11

标签: asp.net iis download large-files

我们希望允许用户从我们的ASP.NET MVC2系统下载大文件。

我们通过Controller.File方法提供文件,该方法从FileStream流向Response.OutputStream。 我们使用Controller.File而不是提供直接链接的原因是我们需要验证登录(Forms身份验证)用户的安全规则。

这样做时最关注的领域是什么?

  • 安全性:我们可能需要增加executionTimeout。这会暴露安全问题吗?
  • 内存:我认为,由于Controller.File直接从磁盘传输内容,因此几乎没有内存影响。
  • CPU :我在各种博客上看到提供大量下载的内容很重,但是这些都是未经证实的声明,因此我没有找到MS的任何建议。
  • 网络:可以进行多少次并发下载?我们可以节流,这样其他流量不会受到阻碍吗?
  • 其他

你的建议是什么?

除了通过ASP.NET管道之外,还有什么其他选项,但仍然为我们提供了验证登录用户所需的数据。据说ISAPI可以降低CPU和内存,可能还有其他一些优势吗?

是否有相关的(官方)指南或最佳做法?

1 个答案:

答案 0 :(得分:0)

我希望异步这样做。确保关闭缓冲,这样您的数据就会发送到客户端,而不是等待您完成。如果你已经流媒体,那那就是好事。我假设你的意思是你从文件流中读取x个字节并将这些字节写入输出流,重复直到EOF。

我不知道我可以指出的任何指导方针。以上来自我自己的经验。