我遇到了Microsoft.WindowsAzure.Storage v9.3.3和Microsoft.Azure.Storage.Blob v11.1.0 NuGet库的问题。特别是在下载大文件时。如果您在“ DownloadToStreamAsync”方法期间更改网络,则调用将挂起。我一直在查看处理文件 lot 的代码,该代码偶尔会挂起,并且一直在尝试缩小范围。我认为网络更改可能是触发Azure Blob存储库中某些故障的可靠方法。
有关此问题的更多信息;
- 拔下网络电缆时,我的计算机切换为WiFi,但请求永远不会恢复
- 如果我开始通过WiFi下载,然后插入网络电缆,则会发生相同的错误
- “ ServerTimeout”属性绝不会失败请求,也不会按照Documentation 的预期进行操作
- “ MaximumExecutionTime”属性确实使请求失败,但我们不想将自己限制在某个时间段内,特别是因为我们正在处理大文件
如果在通话过程中更改了网络,以下代码将在100%的时间内失败。
static void Main(string[] args)
{
try
{
CloudStorageaccount.TryParse("<Connection String>",out var storageaccount);
var cloudBlobClient = storageaccount.CreatecloudBlobClient();
var container = cloudBlobClient.getcontainerReference("<Container Reference>");
var blobRef = container.GetBlockBlobReference("Large Text.txt");
Stream memoryStream = new MemoryStream();
BlobRequestOptions optionsWithRetryPolicy = new BlobRequestOptions() { ServerTimeout = TimeSpan.FromSeconds(5),RetryPolicy = new LinearRetry(TimeSpan.FromSeconds(20),4) };
blobRef.DownloadToStreamAsync(memoryStream,null,optionsWithRetryPolicy,null).Getawaiter().GetResult();
Console.WriteLine("Completed");
}
catch (Exception ex)
{
Console.WriteLine($"Exception: {ex.Message}");
}
finally
{
Console.WriteLine("Finished");
}
}
我在Azure存储GitHub中找到了this active issue,但它似乎没有激活。
在使用此软件包时,我还可以采取其他方法来可靠,有效地下载blob或缺少的东西吗?