带有大文件(300MB)的C#http下载在几分钟后停止(80MB后)
我使用下面的代码向客户发送.zip文件,它对60-80Mb左右的文件非常有效,但是当我尝试使用更大的文件(300MB)时,客户报告说浏览器(IE和FFX)在几分钟后(80Mb左右)停止下载进度,没有发生更多的事情 我想知道IIS是否存在安装问题,会在几分钟后停止请求处理线程执行,或者我的代码是否有任何错误 我显然可以找到其他方法来交付.zip文件,但这个问题让我有点困扰,我想让它正常工作 守则:带有大文件(300MB)的C#http下载在几分钟后停止(80MB后),c#,http,download,C#,Http,Download,我使用下面的代码向客户发送.zip文件,它对60-80Mb左右的文件非常有效,但是当我尝试使用更大的文件(300MB)时,客户报告说浏览器(IE和FFX)在几分钟后(80Mb左右)停止下载进度,没有发生更多的事情 我想知道IIS是否存在安装问题,会在几分钟后停止请求处理线程执行,或者我的代码是否有任何错误 我显然可以找到其他方法来交付.zip文件,但这个问题让我有点困扰,我想让它正常工作 守则: Response.ContentType = "application/zip";
Response.ContentType = "application/zip";
Response.AddHeader("Content-Disposition", "attachment; filename=" + "hands.zip");
var fi = new FileInfo(dld.Path);
Response.AddHeader("Content-Length", fi.Length.ToString());
const int buffercnt = 50000;
var buffer = new byte[buffercnt];
using (var br = new BinaryReader( new StreamReader(dld.Path).BaseStream))
{
int read = br.Read(buffer, 0, buffercnt);
while(read != 0)
{
Response.OutputStream.Write(buffer, 0, read);
read = br.Read(buffer, 0, buffercnt);
Response.Flush();
}
}
Response.Close();
Response.End();
您可以在
web.config
中的标记中设置executionTimeout
属性,以防止代码被中止
请原谅我这么说,你把文件看得一团糟。创建一个StreamReader
只是为了让它为您打开一个FileStream
,而您没有正确地处理StreamReader
。另外,您使用的是BinaryReader
,但您没有使用它的任何功能,Read
方法可以直接从FileStream
获得。因此,跳过StreamReader
和BinaryReader
,自己创建一个FileStream