【发布时间】:2014-08-19 10:56:28
【问题描述】:
我有一个在 Azure Blob 存储上上传、下载和删除文件的应用程序。它工作正常,但是当我执行负载测试时有时在文件下载过程中出现以下异常。
Microsoft.WindowsAzure.Storage.StorageException:远程服务器返回错误:(404) 未找到。 ---> System.Net.WebException:远程服务器返回错误:(404)未找到。
我在构造函数中初始化这些东西一次,然后将其重用于所有方法:
cloudStorageAccount = CloudStorageAccount.Parse(_storage.ConnectionString);
blobClient = cloudStorageAccount.CreateCloudBlobClient();
container = blobClient.GetContainerReference(_storage.Container);
var permission = container.GetPermissions();
permission.PublicAccess = BlobContainerPublicAccessType.Container;
container.SetPermissions(permission);
这是我的 blob 下载代码:
MemoryStream memoryStream = new MemoryStream();
var retryPolicy = TransientFactory.GetStorageRetryPolicy();
retryPolicy.ExecuteAction(() =>
{
CloudBlockBlob blockBlob = container.GetBlockBlobReference(sourceUri);
if (blockBlob.Exists())
{
blockBlob.DownloadToStream(memoryStream);
memoryStream.Position = 0;
}
});
return memoryStream;
【问题讨论】:
-
您没有说明 sourceUri 是如何设置的。有没有可能得到一个错误的地址?
-
我将 blob 名称存储在数据库中,然后将相同的名称传递给 blob 下载。请注意,sourceUri 是一个 blob 名称。
-
Azure Blob 存储名称区分大小写。您是否检查过无法下载的 blob 的大小写是否正确? (我当然希望 'Exists' 方法自己执行此检查)。
标签: azure load-testing azure-blob-storage azure-devops