【问题标题】:Very occasional 400 Bad Request error when posting to Azure Blob Storage发布到 Azure Blob 存储时非常偶然的 400 Bad Request 错误
【发布时间】:2014-07-14 16:23:04
【问题描述】:

我正在使用 Azure Blob 存储来缓存一些计算的中间结果。这一切都很好,除了偶尔,Azure blob 存储客户端会返回如下错误:

The remote server returned an error: (400) Bad Request.

有问题的 C# 代码如下所示:

public void Upload(string fileName, T entity)
{
    try
    {
        var blockBlob = _blobContainer.GetBlockBlobReference(fileName);
        using (var stream = _serializer.Serialize(entity))
        {
            blockBlob.UploadFromStream(stream);
        }
    }
    catch (Exception ex)
    {
        var json = JsonConvert.SerializeObject(entity).SubstringSafe(0, 500);
        _logger.Error("Error uploading object '{0}' of type '{1}' to blob storage container '{2}'; entity='{3}'; error={4}",
            fileName,
            typeof(T).Name,
            _containerName,
            json,
            ex.CompleteMessage());
        throw;
    }
}

fileName 可能类似于“4110\GetNodesForPathAnalysis”(适用于其他情况),_containerName 可能是“segmentedids”(也适用于其他情况)。我知道这个 400 错误的常见原因 - 一个让我多次咬过的错误 - 是违反 The Rules 的容器或 blob 名称,但这里似乎不是这种情况。

错误是暂时的 - 如果我刷新它显示的页面,对象(具有相同的容器和文件名)会正确上传到 Azure Blob 存储。

有什么建议吗?

【问题讨论】:

  • @Tony - 我会试一试,然后发回这里。
  • 我们通常会设置一个配置文件立即重试,然后进行后退重试,这取决于您是否需要回复。您可以将其设置到另一个进程中并让它继续尝试,这样它就不会阻塞用户流。不过,这取决于您的需求。

标签: c# http-status-code-400 azure-blob-storage


【解决方案1】:

您可以使用重试策略和超时设置 BlobRequestOptions 类详细信息,如下所示 -

//set the blob upload timeout and retry strategy
BlobRequestOptions options = new BlobRequestOptions();
options.ServerTimeout = new TimeSpan(0, 180, 0);
options.RetryPolicy = new ExponentialRetry(TimeSpan.Zero, 20);

然后我们可以在说 PutBlock 中指定这个选项变量作为上传操作的一部分。 详细的帖子在这里讨论创建要上传的数据块,然后以并行和异步的方式上传到 blob 存储。这是链接-

http://sanganakauthority.blogspot.com/2014/07/upload-large-files-to-azure-block-blob.html

如果不需要异步,那么您可以使其以同步方式工作。 希望这会有所帮助。

【讨论】:

  • 谢谢。这基本上就是我最终要做的:在一段合适的时间后重试。重试到位后,错误消失了。
猜你喜欢
  • 2013-01-29
  • 2019-06-19
  • 2023-02-24
  • 1970-01-01
  • 2016-05-06
  • 2012-01-12
  • 1970-01-01
  • 1970-01-01
  • 2018-01-30
相关资源
最近更新 更多