加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

试图下载文件的100个并发用户(asp.net C#应用程序)

发布时间:2020-12-16 09:37:45 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试在asp.net应用程序中实现文件下载功能.该应用程序将同时用于约200个用户下载各种文件. 它将托管在IIS 7上.我不希望应用程序服务器崩溃,因为多个请求同时发生. 我假设通过在一个循环中调用Context.Response.Flush(),我正在清除我将要阅读的所有文件
我正在尝试在asp.net应用程序中实现文件下载功能.该应用程序将同时用于约200个用户下载各种文件.
它将托管在IIS 7上.我不希望应用程序服务器崩溃,因为多个请求同时发生.

我假设通过在一个循环中调用Context.Response.Flush(),我正在清除我将要阅读的所有文件数据,因此应用程序内存使用将保持一致.我可以对当前代码进行哪些其他优化,或者在这样的场景中应该使用哪种其他方法?

请求将用于各种文件,文件大小可以是100 KB到10 MB之间的任何值.

我目前的代码是这样的:

FileStream inStr = null;
byte[] buffer = new byte[1024];
String fileName = @"C:DwnldTesttest.doc";
long byteCount; inStr = File.OpenRead(fileName);

Response.AddHeader("content-disposition","attachment;filename=test.doc");

while ((byteCount = inStr.Read(buffer,buffer.Length)) > 0)
{
    if (Context.Response.IsClientConnected)
    {
        Context.Response.ContentType = "application/msword";
        //Context.Response.BufferOutput = true;                    
        Context.Response.OutputStream.Write(buffer,buffer.Length);
        Context.Response.Flush();                    
    }
}

解决方法

您可以使用Response.TransmitFile在发送文件时保存服务器内存.

Response.ContentType = "application/pdf";

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

Response.TransmitFile(@"e:inetwwwdocstestdoc.pdf");

Response.End();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读