我正在尝试在 asp.net 应用程序中实现文件下载功能。该应用程序将被大约 200 个用户同时使用来下载各种文件。它将托管在 IIS 7 上。我不希望应用程序服务器因为多个请求同时出现而崩溃。
我假设通过在循环中调用 Context.Response.Flush() ,我将刷新到那时我将读取的所有文件数据,因此应用程序内存使用将保持一致。我可以对当前代码进行哪些其他优化,或者在这样的场景中应该使用哪些其他方法?
请求将针对各种文件,文件大小可以在 100 KB 到 10 MB 之间。
我当前的代码是这样的:
FileStream inStr = null;
byte[] buffer = new byte[1024];
String fileName = @"C:\DwnldTest\test.doc";
long byteCount; inStr = File.OpenRead(fileName);
Response.AddHeader("content-disposition", "attachment;filename=test.doc");
while ((byteCount = inStr.Read(buffer, 0, buffer.Length)) > 0)
{
if (Context.Response.IsClientConnected)
{
Context.Response.ContentType = "application/msword";
//Context.Response.BufferOutput = true;
Context.Response.OutputStream.Write(buffer, 0, buffer.Length);
Context.Response.Flush();
}
}