C# 从blob存储下载文件时遇到问题
嗨,我必须从blob存储下载一个5到6GB的文件,每次下载时我都会遇到下面提到的错误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;
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。