gpt4 book ai didi

c# - Azure Blob 存储 : DownloadToStreamAsync downloading 0kb streams

转载 作者:行者123 更新时间:2023-12-03 04:35:49 24 4
gpt4 key购买 nike

看看下面的代码,我对为了确保库正确下载文件而需要编写的样板代码数量感到惊讶。

是否有任何原因导致我看到 0kb 下载的流,或者这只是编写这样的方法的正常现象?

 public static async Task<string> DownloadSASUriInputDataAsync(string workingDirectory, string sasUri)
{
Trace.TraceInformation("{0}", sasUri);
var input = new CloudBlockBlob(new Uri(sasUri));
input.ServiceClient.DefaultRequestOptions.RetryPolicy = new ExponentialRetry(TimeSpan.FromMilliseconds(100), 10);

var fileName = Path.GetFileName(input.Name);

await Retry.LinearAsync(async () =>
{
try
{
using (var ms = new MemoryStream())
{
await input.DownloadToStreamAsync(ms);
ms.Seek(0, SeekOrigin.Begin);

if (ms.Length == 0)
{
throw new RunAlgorithmException("Downloaded file was 0 byte");
}

using (var fs = new FileStream(Path.Combine(workingDirectory, fileName), FileMode.Create, FileAccess.Write))
{
await ms.CopyToAsync(fs);
}
}

Trace.TraceInformation("downloaded file");

}
catch (StorageException ex)
{

Trace.TraceError("Failed to DownloadSASUriInputDataAsync : {0}", ex.ToString());
throw;
}
}, TimeSpan.FromMilliseconds(500),10);

return fileName;
}

最佳答案

所有 0kb 流的问题是 blob 仍在复制。

即使正在复制 Blob,仍然可以访问它们,并且会产生上述行为。

在尝试下载 blob.CopyState 是否已完成或丢失之前添加检查,以确保它按照 SLA 状态工作。

关于c# - Azure Blob 存储 : DownloadToStreamAsync downloading 0kb streams,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24843239/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com