2010-03-02 5 views
3

J'ai donc cette application qui doit interroger des entités à partir du stockage Azure Tables à partir de tables dont je ne connais pas le schéma.Accéder aux entités Azure Table

1) Est-ce que je peux faire cela avec l'emballage Storageclient?
2) Je suppose que non, donc j'ai essayé avec l'API REST et je reçois toujours le 403 Interdit lorsque je demande pour les entités.

Ceci est mon code.

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(); 
+0

à qui mes tags modifié: mec! pourquoi juste d'azur? Windows Azure est assez gros ... et est uniquement lié aux tables du compte de stockage ... – sebagomez

+0

Malheureusement, Microsoft ne propose aucune API de niveau REST pour le stockage de table à ce stade (je m'en suis déjà plaint, voir http: // vermorel .com/journal/2010/1/15/graisse-entités-pour-table-stockage-dans-lokadcloud.html), et client ADO.NET ne pas typage générique. À ce stade, je suggère d'abandonner et d'attendre jusqu'à ce que Microsoft fournit un client lib décent. –

Répondre

2

Oui, vous pouvez le faire. Il ya une bonne entrée sur la façon de: http://social.msdn.microsoft.com/Forums/en-US/windowsazure/thread/481afa1b-03a9-42d9-ae79-9d5dc33b9297/

Cela donne un bon exemple de code, donc je ne vais pas m'étendre là-dessus. Ce code est à peu près ce que j'utilise dans mon projet AzureTableQuery pour trouver les propriétés d'une entité. Si vous regardez le code, consultez le GenericTableContext.cs et GenericEntity.cs classes

+0

merci @Jason, excellente solution! – sebagomez

0

Mon problème initial était dû au fait que mon en-tête Autorisation n'était pas correct.
Je venais d'ajouter la clé et il y a en fait quelques choses que vous devez faire avec la clé, signer une chaîne et l'ajouter à l'en-tête Autorisation.
Plus d'infos here.

Alors pourquoi ai-je marqué la réponse de @ Jason comme valide? Parce que mes hypothèses étaient fausses. Il existe un moyen d'interroger des entités dans vos tables Azure même si vous ne connaissez pas le schéma de vos tables. Et le message de Jason m'a montré le chemin.

0

Windows Azure Les tables peuvent être interrogées via le protocole OData (odata.org). Le plus simple est d'avoir PartitionKey et RowKey de l'entité qui veulent obtenir/update/merge/delete.

exemples Tous REST sont là (pour les tables requête et entités requête): http://msdn.microsoft.com/en-us/library/dd179423.aspx

Questions connexes