Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.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
C# 从blob存储下载文件时遇到问题_C#_Azure_Azure Blob Storage - Fatal编程技术网

C# 从blob存储下载文件时遇到问题

C# 从blob存储下载文件时遇到问题,c#,azure,azure-blob-storage,C#,Azure,Azure Blob Storage,嗨,我必须从blob存储下载一个5到6GB的文件,每次下载时我都会遇到下面提到的错误 Error-: 无法从传输连接读取数据:远程主机强制关闭了现有连接 My code for downloading: protected void btn_download_Click1(object sender, EventArgs e) { AccountFileTransfer = CloudStorageAccount.Parse("DefaultEndpointsProtocol=http;

嗨,我必须从blob存储下载一个5到6GB的文件,每次下载时我都会遇到下面提到的错误

Error-:
无法从传输连接读取数据:远程主机强制关闭了现有连接

My code for downloading:

protected void btn_download_Click1(object sender, EventArgs e)
{

 AccountFileTransfer = CloudStorageAccount.Parse("DefaultEndpointsProtocol=http;AccountName=" + ACCOUNTNAME + ";AccountKey=" + ACCOUNTKEY);

 if (AccountFileTransfer != null)
    {
        BlobClientFileTransfer = AccountFileTransfer.CreateCloudBlobClient();
        ContainerFileTransfer = BlobClientFileTransfer.GetContainerReference(CONTAINER);
        ContainerFileTransfer.CreateIfNotExist();
        BlobRequestOptions options = new BlobRequestOptions();
        options.Timeout = new TimeSpan(0, 180, 0);
    }

  var blob = ContainerFileTransfer.GetBlockBlobReference(downloadfile);

    var sasUrl = blob.Uri.AbsoluteUri;


    CloudBlockBlob blockBlob = new CloudBlockBlob(sasUrl);

   //blobSize = Convert.ToInt32(lblfilesize.Text.ToString());
    blockSize = 5 * 1024*1024;
    Response.Clear();
    Response.ContentType = "APPLICATION/OCTET-STREAM";
    System.String disHeader = "Attachment; Filename=\"" + blockBlob.Name + "\"";
    Response.AppendHeader("Content-Disposition", disHeader);
    for ( offset = 0; offset < blobSize; offset += blockSize)
    {
        using (var blobStream = blockBlob.OpenRead())
        {
            if ((offset + blockSize) > blobSize)
            {
                blockSize =(blobSize - offset);
            }

            byte[] buffer = new byte[blockSize];
            blobStream.Read(buffer, 0, buffer.Length);
            Response.BinaryWrite(buffer);
            Response.Flush();
        }
    }
    Response.End();
我的下载代码:
受保护的无效btn\u下载\u单击1(对象发送者,事件参数e)
{
AccountFileTransfer=CloudStorageAccount.Parse(“DefaultEndpointsProtocol=http;AccountName=“+AccountName+”;AccountKey=“+AccountKey”);
if(AccountFileTransfer!=null)
{
BlobClientFileTransfer=AccountFileTransfer.CreateCloudBlobClient();
ContainerFileTransfer=BlobClientFileTransfer.GetContainerReference(容器);
ContainerFileTransfer.CreateIfNotExist();
BlobRequestOptions options=新的BlobRequestOptions();
options.Timeout=newtimespan(0,180,0);
}
var blob=ContainerFileTransfer.GetBlockBlobReference(下载文件);
var sasUrl=blob.Uri.AbsoluteUri;
CloudBlockBlob blockBlob=新的CloudBlockBlob(sasUrl);
//blobSize=Convert.ToInt32(lblfilesize.Text.ToString());
块大小=5*1024*1024;
Response.Clear();
Response.ContentType=“应用程序/OCTET-STREAM”;
System.String disHeader=“附件;文件名=\”“+blockBlob.Name+”\”;
响应。附录标题(“内容处置”,disHeader);
对于(偏移量=0;偏移量水滴大小)
{
blockSize=(blobSize-偏移量);
}
字节[]缓冲区=新字节[块大小];
读(buffer,0,buffer.Length);
二进制写入(缓冲区);
Response.Flush();
}
}
Response.End();

}

您是否尝试过将块大小从5 MB减少到1 MB(甚至更低)?我必须下载.iso文件,下载文件大小以MB为单位没有问题,但当我按照您的建议将块大小设置为4 MB后下载文件(大小为3 GB)时,会下载iso文件,但每个文件大小为0 KB。