我正在尝试在asp.net应用程序中实现文件下载功能.该应用程序将同时用于约200个用户下载各种文件.
它将托管在IIS 7上.我不希望应用程序服务器崩溃,因为多个请求同时发生.
它将托管在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,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:\inet\www\docs\testdoc.pdf"); Response.End();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。