Accesso entità Azure Table
-
23-09-2019 - |
Domanda
Così ho questa applicazione che ha bisogno di soggetti di query dalla memoria Tabelle Azure dalle tabelle non so lo schema di.
1) C'è un modo per farlo con il Storageclient involucro?
2) Io non sono indovinare, così ho provato con l'API REST e ho sempre ottenere il 403 Forbidden quando interrogo per le entità.
Questo è il mio codice.
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();
Soluzione
Sì, è possibile farlo. C'è una voce di buona su come in: http://social.msdn.microsoft.com/Forums/en-US/windowsazure/thread/481afa1b-03a9-42d9-ae79-9d5dc33b9297/
Si dà un esempio di codice buono, quindi non mi dilungherò su di esso. Questo codice è più o meno quello che uso nel mio AzureTableQuery progetto per scoprire le proprietà di un'entità. Se si guarda il codice, controlla la GenericTableContext.cs GenericEntity.cs classi
Altri suggerimenti
Le tabelle di Windows Azure sono interrogabile tramite il protocollo OData (odata.org). Il modo più semplice è quello di avere il PartitionKey e la RowKey dell'entità che vogliono ottenere / aggiornamento / merge / cancellare.
Tutti esempi REST ci sono (per la domanda tavoli e le entità query): http://msdn.microsoft.com/en-us/library/dd179423. aspx
Il mio problema iniziale era dovuta al fatto che il mio colpo di testa Autorization non era giusto.
Stavo semplicemente aggiungendo la chiave e c'è in realtà un paio di cose che devi fare con la chiave, firmare una stringa e aggiungere che per l'header Autorization.
Maggiori informazioni qui .
Allora, perché ho mark @ risposta di Jason come valido? Perché le mie supposizioni erano sbagliate. C'è un modo per entità di query nelle tabelle Azure, anche se non si conosce lo schema delle tabelle. E il post di Jason mostrato il mio modo.