远程服务器返回错误:(412)不满足使用HTTP条件标头指定的条件。

时间:2016-11-30 18:16:54

标签: c# asp.net .net azure azure-storage-blobs

我正在尝试使用DownloadText()下载Azure Append Blob的内容。该函数偶尔抛出异常:

远程服务器返回错误:(412)不符合使用HTTP条件标头指定的条件..

虽然我没有编写任何代码来管理并发,但是应该应用默认的“Last Wins”逻辑。正在从Web应用程序和API访问blob存储,但偶尔会在Web应用程序中抛出此异常。

1 个答案:

答案 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));
        }