【发布时间】: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