我的ASP.NET应用程序允许用户上传和下载大文件。这两个过程都涉及读写文件流。我该怎么做才能确保应用程序在处理大文件时不会挂起或崩溃?应该在工作线程上处理文件操作吗?
答案 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)
除非这是您网站的主要目的,否则请考虑将这些操作划分为单独的应用程序,例如子应用程序或子域。除了降低风险之外,这还可以简化用户群增长时的扩展。