C# 写入CloudAppendBlob:远程服务器返回错误:(409)冲突&;ProcessExpectedStatusCodeNoException
我正在试图了解是什么导致远程服务器返回错误:(409)冲突异常 我通过获取租约、追加文本并破坏租约,将行写入AppendBlob,就像这样。这个错误只是偶尔发生,所以我很好奇什么样的情况会导致它发生。我的怀疑是,如果多个用户访问了执行此代码的端点,并且不知何故同时发生了获取租约的调用,那么可能会发生一些事情C# 写入CloudAppendBlob:远程服务器返回错误:(409)冲突&;ProcessExpectedStatusCodeNoException,c#,azure,azure-storage,azure-storage-blobs,C#,Azure,Azure Storage,Azure Storage Blobs,我正在试图了解是什么导致远程服务器返回错误:(409)冲突异常 我通过获取租约、追加文本并破坏租约,将行写入AppendBlob,就像这样。这个错误只是偶尔发生,所以我很好奇什么样的情况会导致它发生。我的怀疑是,如果多个用户访问了执行此代码的端点,并且不知何故同时发生了获取租约的调用,那么可能会发生一些事情 // Get the AppendBlob reference CloudAppendBlob blob = …. // Acquire a lease on the blob until
// Get the AppendBlob reference
CloudAppendBlob blob = ….
// Acquire a lease on the blob until a call to breaking the lease is made
string leaseId = Guid.NewGuid().ToString();
await blob.AcquireLeaseAsync(null, leaseId);
// Append a new entry to the blob
await blob.AppendTextAsync(
textToBeAppended,
Encoding.UTF8,
new AccessCondition { LeaseId = leaseId },
new BlobRequestOptions(),
new OperationContext());
// break the lease on the blob
await blob.BreakLeaseAsync(null);
失败的方法是Microsoft.WindowsAzure.Storage.Shared.Protocol.HttpResponseParsers.ProcessExpectedStatusCodeNoException。
我从遥测中看到,对blob的PUT调用最初失败,出现409状态代码和上述异常,但在成功调用PUT后立即出现202结果代码。我假设Azure存储正在重试,但是我没有看到它应该附加到的文件中的文本行
这是完整的调用堆栈,如果这有帮助的话,我不确定ProcessExpectedStatusCodeNoException的含义是什么
Microsoft.WindowsAzure.Storage.StorageException:位于
Microsoft.WindowsAzure.Storage.Core.Executor.Executor.EndExecuteAsync
(Microsoft.WindowsAzure.Storage,版本=9.3.1.0,区域性=中性,
PublicKeyToken=31bf3856ad364e35Microsoft.WindowsAzure.Storage,
版本=9.3.1.0,区域性=中性,PublicKeyToken=31bf3856ad364e35:
c:\程序文件
(x86)\Jenkins\workspace\release\u dotnet\u master\Lib\ClassLibraryCommon\Core\Executor\Executor.csMicrosoft.WindowsAzure.Storage,
版本=9.3.1.0,区域性=中性,PublicKeyToken=31bf3856ad364e35:50)
在
Microsoft.WindowsAzure.Storage.Core.Util.AsyncExtensions+c__DisplayClass2`1.b__0
(Microsoft.WindowsAzure.Storage,版本=9.3.1.0,区域性=中性,
PublicKeyToken=31bf3856ad364e35Microsoft.WindowsAzure.Storage,
版本=9.3.1.0,区域性=中性,PublicKeyToken=31bf3856ad364e35:
c:\程序文件
(x86)\Jenkins\workspace\release\u dotnet\u master\Lib\ClassLibraryCommon\Core\Util\AsyncExtensions.csMicrosoft.WindowsAzure.Storage,
版本=9.3.1.0,区域性=中性,PublicKeyToken=31bf3856ad364e35:69)
在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw
(mscorlib,版本=4.0.0.0,区域性=中性,
PublicKeyToken=b77a5c561934e089)在
System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification
(mscorlib,版本=4.0.0.0,区域性=中性,
PublicKeyToken=b77a5c561934e089)在
Microsoft.Community.Data.Providers.BlobStorageProvider+d_u1.MoveNext
(Microsoft.Community.Data,版本=1.0.0.0,区域性=中性,
PublicKeyToken=nullMicrosoft.Community.Data,版本=1.0.0.0,
区域性=中性,PublicKeyToken=空:
C:\BA\813\s\Microsoft.Community\Microsoft.Community.Data\Providers\BlobStorageProvider.csMicrosoft.Community.Data,
版本=1.0.0.0,区域性=中立,PublicKeyToken=null:67)位于
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw
(mscorlib,版本=4.0.0.0,区域性=中性,
PublicKeyToken=b77a5c561934e089)在
Microsoft.Community.Data.Providers.BlobStorageProvider+d_u1.MoveNext
(Microsoft.Community.Data,版本=1.0.0.0,区域性=中性,
PublicKeyToken=nullMicrosoft.Community.Data,版本=1.0.0.0,
区域性=中性,PublicKeyToken=空:
C:\BA\813\s\Microsoft.Community\Microsoft.Community.Data\Providers\BlobStorageProvider.csMicrosoft.Community.Data,
版本=1.0.0.0,区域性=中性,PublicKeyToken=null:72)位于
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw
(mscorlib,版本=4.0.0.0,区域性=中性,
PublicKeyToken=b77a5c561934e089)在
System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification
(mscorlib,版本=4.0.0.0,区域性=中性,
PublicKeyToken=b77a5c561934e089)在
Microsoft.Community.Web.Repositories.AzureMLRecommensionsRepository+d_u6.MoveNext
(Microsoft.Community.Web,版本=1.0.0.0,区域性=中性,
PublicKeyToken=nullMicrosoft.Community.Web,版本=1.0.0.0,
区域性=中性,PublicKeyToken=空:
C:\BA\813\s\Microsoft.Community\Microsoft.Community.Web\Repositories\AzureMLRecommensionsRepository.csMicrosoft.Community.Web,
版本=1.0.0.0,区域性=中立,PublicKeyToken=null:95)
内部异常System.Net.WebException在处处理
Microsoft.WindowsAzure.Storage.Core.Executor.Executor.EndExecuteAsync:
在
Microsoft.WindowsAzure.Storage.Shared.Protocol.HttpResponseParsers.ProcessExpectedStatusCodeNoException
(Microsoft.WindowsAzure.Storage,版本=9.3.1.0,区域性=中性,
PublicKeyToken=31bf3856ad364e35Microsoft.WindowsAzure.Storage,
版本=9.3.1.0,区域性=中性,PublicKeyToken=31bf3856ad364e35:
c:\程序文件
(x86)\Jenkins\workspace\release\u dotnet\u master\Lib\Common\Shared\Protocol\HttpResponseParsers.Common.csMicrosoft.WindowsAzure.Storage,
版本=9.3.1.0,区域性=中性,PublicKeyToken=31bf3856ad364e35:54)
在
Microsoft.WindowsAzure.Storage.Blob.CloudBlob+c\u显示类39.b\u 38
(Microsoft.WindowsAzure.Storage,版本=9.3.1.0,区域性=中性,
PublicKeyToken=31bf3856ad364e35Microsoft.WindowsAzure.Storage,
版本=9.3.1.0,区域性=中性,PublicKeyToken=31bf3856ad364e35:
c:\程序文件
(x86)\Jenkins\workspace\release\u dotnet\u master\Lib\ClassLibraryCommon\Blob\CloudBlob.csMicrosoft.WindowsAzure.Storage,
版本=9.3.1.0,区域性=中性,PublicKeyToken=31bf3856ad364e35:
3830)在
Microsoft.WindowsAzure.Storage.Core.Executor.Executor.EndGetResponse
(Microsoft.WindowsAzure.Storage,版本=9.3.1.0,区域性=中性,
PublicKeyToken=31bf3856ad364e35Microsoft.WindowsAzure.Storage,
版本=9.3.1.0,区域性=中性,PublicKeyToken=31bf3856ad364e35:
c:\程序文件
(x86)\Jenkins\workspace\release\u dotnet\u master\Lib\ClassLibraryCommon\Core\Executor\Executor.csMicrosoft.WindowsAzure.Sto