Pergunta

Portanto, tenho este aplicativo que precisa consultar entidades do armazenamento do Azure Tables a partir de tabelas cujo esquema não conheço.

1) Existe uma maneira de fazer isso com o wrapper Storageclient?
2) Acho que não, então tentei com a API REST e sempre recebo o 403 Proibido quando consulto as entidades.

Este é o meu código.

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();
Foi útil?

Solução

Sim, você pode fazer isso. Há uma boa entrada sobre como fazer: http://social.msdn.microsoft.com/forums/en-us/windowszure/thread/481afa1b-03a9-42d9-ae79-9d5dc33b9297/

Dá um bom exemplo de código, para que não seja elaborado. Este código é praticamente o que eu uso no meu AzuretableQuery Projeto para descobrir as propriedades de uma entidade. Se você olhar para o código, verifique o GenerictableContext.cs e Genicentity.cs Aulas

Outras dicas

As tabelas do Windows Azure podem ser consultadas por meio do protocolo OData (odata.org).A maneira mais fácil é ter o PartitionKey e o RowKey da entidade que deseja obter/atualizar/mesclar/excluir.

Todos os exemplos REST estão lá (para consulta de tabelas e consulta de entidades):http://msdn.microsoft.com/en-us/library/dd179423.aspx

Meu problema inicial foi devido ao fato de que meu cabeçalho de autorização não estava certo.
Eu estava apenas adicionando a chave e, na verdade, há algumas coisas que você precisa fazer com a chave, assinar uma string e adicioná -la ao cabeçalho da autorização.
Mais informações aqui.

Então, por que marquei a resposta de Jason como válida? Porque minhas suposições estavam erradas. Existe uma maneira de consultar entidades em suas tabelas do Azure, mesmo que você não conheça o esquema de suas mesas. E o post de Jason mostrou o meu caminho.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top