【问题标题】:Remote server not found error on blob download from Azure从 Azure 下载 Blob 时找不到远程服务器错误
【发布时间】: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


【解决方案1】:

确保作为 URL 一部分的文件名具有完全相同的大小写 - 不要使用 .ToLower() 等来改变大小写。

至少这是我的问题。

【讨论】:

    【解决方案2】:

    如果您使用的是 Azure 存储客户端库 4.0 或更高版本,请将 Blob 名称而不是 Uri 传递给 GetBlockBlobReference。或者,如果您想使用 Uri,则应使用 CloudBlockBlob constructor

    【讨论】:

    • 我正在使用 Azure 存储客户端库 3.1.0.1 并传递 blob 名称而不是 Uri。
    • 您是否启用了存储分析日志记录?如果是,您可以通过查看请求状态字段来了解您的请求失败的原因。
    【解决方案3】:

    还要检查文件是否没有上传到子文件夹。在这种情况下,您需要在 Blob 引用中添加此子文件夹的名称:

            CloudBlockBlob blob = container.GetBlockBlobReference("subFolder/"+reference);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-03
      • 1970-01-01
      • 2016-11-18
      • 2016-08-19
      • 2014-08-19
      • 2018-02-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多