尝试第一次调用table.CreateIfNotExists()时出现409错误

Sli*_*ead 5 asp.net azure azure-storage azure-storage-blobs razor

自关联表被删除以来第一次启动我的程序时出现此错误:

Microsoft.WindowsAzure.Storage.dll中出现"Microsoft.WindowsAzure.Storage.StorageException"类型的例外但未在用户代码中处理

附加信息:远程服务器返回错误:(409)冲突.

但是,如果我刷新崩溃的页面,表将成功创建.

以下是以下代码:

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
Microsoft.WindowsAzure.CloudConfigurationManager.
GetSetting("StorageConnectionString"));

CloudTableClient tableClient = storageAccount.CreateCloudTableClient();

CloudTable table = tableClient.GetTableReference("tableTesting");
table.CreateIfNotExists();
Run Code Online (Sandbox Code Playgroud)

如果那里什么也没有,我真的不明白我是如何或为什么会遇到冲突错误.

当我使用blob容器时,这些错误也出现在我的代码的其他地方,但我无法轻易地重现它们.

Gau*_*tri 21

如果您在此处查看状态代码:http://msdn.microsoft.com/en-us/library/azure/dd179438.aspx,您会注意到在两种情况下会收到409错误代码:

  1. 表已存在
  2. 表正在删除

如果我理解正确,table.CreateIfNotExists()只处理第一种情况而不处理第二种情况.请检查您的情况是否不是这种情况.检查这一点的一种方法是查看存储异常的详细信息.在某个地方你应该得到与我上面提到的链接相匹配的代码.

另外一个重要的事情是,当你删除表时,它实际上被标记为删除,并且实际上是通过后台进程删除的(很像垃圾收集).如果您尝试在这两个步骤之间创建表,则会出现第二个错误.