gpt4 book ai didi

Azure 表存储在插入时抛出异常 : (409) Conflict

转载 作者:行者123 更新时间:2023-12-04 05:52:53 31 4
gpt4 key购买 nike

我使用 Azure 表存储从 MVC 应用程序记录访问者信息,但有时会引发以下异常:

[WebException: The remote server returned an error: (409) Conflict.]
System.Net.HttpWebRequest.GetResponse() +1399
Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync(RESTCommand`1 cmd, IRetryPolicy policy, OperationContext operationContext) in c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Core\Executor\Executor.cs:677

[StorageException: The remote server returned an error: (409) Conflict.]
Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync(RESTCommand`1 cmd, IRetryPolicy policy, OperationContext operationContext) in c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Core\Executor\Executor.cs:604
Microsoft.WindowsAzure.Storage.Table.TableOperation.Execute(CloudTableClient client, CloudTable table, TableRequestOptions requestOptions, OperationContext operationContext) in c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Table\TableOperation.cs:44

当我在一段时间不活动后第一次访问该网站时,似乎会发生这种情况,然后当我点击刷新时,页面会加载,并且此后的每次点击都很好。

这是导致异常的代码部分:

  var visit = new TrackerVisitEntity(id, url, referer);
var insertOperation = TableOperation.Insert(visit);
_table.Execute(insertOperation);

更新

正如评论和下面的两个答案中所指出的,问题是有时页面会连续快速加载两次,并且我使用 GUID(对用户来说是唯一的)作为分区键,当前日期时间为行键,因此这会导致重复的实体并导致异常。

虽然Amor的回答更深入,但Dogu的简单解决方案是我使用的,所以我标记了他的正确性。谢谢大家。

最佳答案

您可以尝试使用 InsertOrReplace 而不是 Insert 来避免 409,如果实体不存在,它将插入实体,如果存在,则替换现有实体。需要注意的是,它不会检查 eTag ,因此如果存在具有相同分区键和行键的现有实体,它会无条件地覆盖它。

关于Azure 表存储在插入时抛出异常 : (409) Conflict,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44799524/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com