Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有大文件(300MB)的C#http下载在几分钟后停止(80MB后)_C#_Http_Download - Fatal编程技术网

带有大文件(300MB)的C#http下载在几分钟后停止(80MB后)

带有大文件(300MB)的C#http下载在几分钟后停止(80MB后),c#,http,download,C#,Http,Download,我使用下面的代码向客户发送.zip文件,它对60-80Mb左右的文件非常有效,但是当我尝试使用更大的文件(300MB)时,客户报告说浏览器(IE和FFX)在几分钟后(80Mb左右)停止下载进度,没有发生更多的事情 我想知道IIS是否存在安装问题,会在几分钟后停止请求处理线程执行,或者我的代码是否有任何错误 我显然可以找到其他方法来交付.zip文件,但这个问题让我有点困扰,我想让它正常工作 守则: Response.ContentType = "application/zip";

我使用下面的代码向客户发送.zip文件,它对60-80Mb左右的文件非常有效,但是当我尝试使用更大的文件(300MB)时,客户报告说浏览器(IE和FFX)在几分钟后(80Mb左右)停止下载进度,没有发生更多的事情

我想知道IIS是否存在安装问题,会在几分钟后停止请求处理线程执行,或者我的代码是否有任何错误

我显然可以找到其他方法来交付.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