Вопрос

Итак, у меня есть приложение, которому нужно запрашивать объекты из хранилища таблиц Azure из таблиц, схему которых я не знаю.

1) Есть ли способ сделать это с помощью оболочки Storageclient?
2) Думаю, нет, поэтому я попробовал использовать REST API и всегда получаю ошибку 403 Forbidden, когда запрашиваю объекты.

Это мой код.

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/

Это хороший пример кода, поэтому я не буду подробно останавливаться на нем.Этот код во многом является тем, что я использую в своих Азуретаблекуери проект по выяснению свойств сущности.Если вы посмотрите на код, проверьте Дженериктаблеконтекст.cs и GenericEntity.cs занятия

Другие советы

Таблицы Windows Azure доступны для запроса через протокол OData (odata.org).Самый простой способ — иметь PartitionKey и RowKey объекта, который хочет получить/обновить/объединить/удалить.

Здесь представлены все примеры REST (для запроса таблиц и запросов сущностей):http://msdn.microsoft.com/en-us/library/dd179423.aspx

Моя первоначальная проблема была связана с тем, что мой заголовок авторизации был неправильным.
Я просто добавлял ключ, и на самом деле вам нужно кое-что сделать с ключом: подписать строку и добавить ее в заголовок авторизации.
Больше информации здесь.

Так почему же я отметил ответ @Jason как действительный?Потому что мои предположения были ошибочными.Существует способ запросить сущности в ваших таблицах Azure, даже если вы не знаете схему своих таблиц.И пост Джейсона указал мне путь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top