在ASP.NET中处理大型文件传输时,您应该采取哪些预防措施?

时间:2008-11-09 16:38:26

标签: c# asp.net large-files file-transfer

我的ASP.NET应用程序允许用户上传和下载大文件。这两个过程都涉及读写文件流。我该怎么做才能确保应用程序在处理大文件时不会挂起或崩溃?应该在工作线程上处理文件操作吗?

2 个答案:

答案 0 :(得分:1)

确保正确缓冲文件,以便它们不会占用系统中过多的内存。

e.g。摘自下载应用程序,在while循环中读取文件:

// Read the data in buffer.
length = iStream.Read(buffer, 0, bufferSize);

// Write the data to the current output stream.
Response.OutputStream.Write(buffer, 0, length);

其中bufferSize是合理的,例如100000字节,权衡的是,对于较小的缓冲区大小,它会更慢。

http://support.microsoft.com/kb/812406

编辑:还要确保将IIS设置为足够大request length(IIS7)并超时。

答案 1 :(得分:0)

除非这是您网站的主要目的,否则请考虑将这些操作划分为单独的应用程序,例如子应用程序或子域。除了降低风险之外,这还可以简化用户群增长时的扩展。