所以我有这样的应用程序,它需要从Azure的存储表查询实体从表中我不知道的模式。

1)有没有一种方法,我可以做到这一点与Storageclient包装?点击 2)我猜没有,所以我用REST API尝试,我总是得到故宫的403,当我查询的实体。

这是我的代码。

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(string.Format("http://{0}.table.core.windows.net/Tables('{1}')", account,query));
request.UserAgent = " Microsoft ADO.NET Data Services";
request.KeepAlive = true;
request.Method = "GET";
request.Headers.Add("x-ms-version", "2009-09-19");
request.Headers.Add("x-ms-date", string.Format("{0} GMT", DateTime.UtcNow.ToString ("ddd, dd MMM yyyy HH:mm:ss")));
request.Headers.Add("Authorization", string.Format("SharedKey {0}:{1}", account, key));
request.Accept = "application/atom+xml,application/xml";
request.Headers.Add("Accept-Charset", "UTF-8");
request.Headers.Add("DataServiceVersion", "1.0;NetFx");
request.Headers.Add("MaxDataServiceVersion", "1.0;NetFx");

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
有帮助吗?

解决方案

是的,你可以做到这一点。有关于如何很好的入门处:的 http://social.msdn.microsoft.com/Forums/en-US/windowsazure/thread/481afa1b-03a9-42d9-ae79-9d5dc33b9297/

它提供了良好的代码示例,所以我不会在其上详细说明。此代码是差不多就是我在 AzureTableQuery 项目中使用,找出一个实体的属性。如果你看一下代码,请查看 GenericTableContext.cs GenericEntity.cs

其他提示

Windows Azure的表是通过的OData(odata.org)协议可查询。最简单的方法是让PartitionKey,谁想要得到的实体RowKey /更新/合并/删除。

所有REST实例是存在(对于表查询和查询实体): http://msdn.microsoft.com/en-us/library/dd179423。 ASPX

我最初的问题是由于这样的事实,我Autorization头是不正确的。结果 我只是添加的关键,实际上有你需要做的钥匙,签署串并添加到Autorization头几件事。结果 更多信息这里

那么,我为什么马克·杰森的回答是有效的?因为我的假设是错误的。有一种方法来在你的Azure的表查询实体,即使你不知道你的表的模式。和杰森的帖子显示我的方式。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top