我对Windows Azure开发非常陌生,但有一个将一些数据存储在Windows Azure存储表中的要求。
这个表实际上只存在于提供快速查找机制并位于Azure存储驱动器上的某些文件的目的。
因此,我计划在应用程序启动时(即在Web应用程序全局应用程序启动时)填充此表。
与在应用程序不运行时可能发生的驱动器更改相比,维护此表会比较麻烦。或者,由于该驱动器只是资源的虚拟硬盘,我们可能会偶尔上传新的虚拟硬盘。
因此,与其费心去维护它,每次应用程序启动时重新构建此表就足够了。
我开始编写一些代码来检查该表是否已存在,如果存在,则删除它,然后重新创建一个新表。
var storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["AzureStorage"].ConnectionString);
var tableClient = storageAccount.CreateCloudTableClient();
var rmsTable = tableClient.GetTableReference("ResourceManagerStorage");
rmsTable.DeleteIfExists();
rmsTable.Create();
我本以为这不会管用。结果我得到了以下错误:
The remote server returned an error: (409) Conflict.
HTTP/1.1 409 Conflict
Cache-Control: no-cache
Transfer-Encoding: chunked
Server: Windows-Azure-Table/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: c6baf92e-de47-4a6d-82b3-4faec637a98c
x-ms-version: 2012-02-12
Date: Tue, 19 Mar 2013 17:26:25 GMT
166
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<code>TableBeingDeleted</code>
<message xml:lang="en-US">The specified table is being deleted. Try operation later.
RequestId:c6baf92e-de47-4a6d-82b3-4faec637a98c
Time:2013-03-19T17:26:26.2612698Z</message>
</error>
0
怎样才是正确的做法?是否有事件可供订阅,以便在表格被删除时得到通知?对于实现这一点的最佳方法,您有其他建议吗?