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

时间:2014-08-05 14:56:19

标签: asp.net azure razor azure-storage azure-storage-blobs

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

  

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();

如果没有任何内容,我真的不明白我是如何或为什么会遇到冲突错误。

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

1 个答案:

答案 0 :(得分:20)

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

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

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

相关问题