我正在尝试使用DownloadText()下载Azure Append Blob的内容。该函数偶尔抛出异常:
远程服务器返回错误:(412)不符合使用HTTP条件标头指定的条件..
虽然我没有编写任何代码来管理并发,但是应该应用默认的“Last Wins”逻辑。正在从Web应用程序和API访问blob存储,但偶尔会在Web应用程序中抛出此异常。
答案 0 :(得分:2)
根据错误消息,尝试下载blob内容时似乎已更改blob内容。如果blob发生变化,blob的ETag将自动更改。请尝试使用以下代码进行检查并弄清楚。有关存储条件操作的更多详细信息,请参阅document。
CloudAppendBlob appendBlob = container.GetAppendBlobReference("myAppendBlob");
appendBlob.FetchAttributes();
var etag = appendBlob.Properties.ETag;
try
{
appendBlob.DownloadText(Encoding.UTF8, AccessCondition.GenerateIfMatchCondition(etag));
}
catch (Exception)
{
appendBlob.FetchAttributes();
var updateEtag = appendBlob.Properties.ETag;
Console.WriteLine($"Original:{etag},Updated:{updateEtag}");
//To Do list
//appendBlob.DownloadText(Encoding.UTF8, AccessCondition.GenerateIfMatchCondition(updateEtag));
}