gpt4 book ai didi

c# - 数百个并发用户尝试下载文件(asp.net C# 应用程序)

转载 作者:行者123 更新时间:2023-11-30 12:48:58 25 4
gpt4 key购买 nike

我正在尝试在 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();
}
}

最佳答案

您可以在发送文件时使用Response.TransmitFile 来节省服务器内存。

Response.ContentType = "application/pdf";

Response.AddHeader("content-disposition", "attachment; filename=testdoc.pdf");

Response.TransmitFile(@"e:\inet\www\docs\testdoc.pdf");

Response.End();

关于c# - 数百个并发用户尝试下载文件(asp.net C# 应用程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13031551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com