3

そのため、スキーマがわからないテーブルから Azure Tables ストレージのエンティティをクエリする必要があるこのアプリがあります。

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();
4

3 に答える 3

2

はい、できます。方法については、 http ://social.msdn.microsoft.com/Forums/en-US/windowsazure/thread/481afa1b-03a9-42d9-ae79-9d5dc33b9297/ に適切なエントリがあります。

良いコード例を示しているので、詳しくは説明しません。このコードは、AzureTableQueryプロジェクトでエンティティのプロパティを見つけるために使用するものとほとんど同じです。コードを見る場合は、GenericTableContext.csおよびGenericEntity.csクラスを確認してください。

于 2010-03-03T11:41:09.920 に答える
0

Windows Azure テーブルは、OData (odata.org) プロトコルを介してクエリ可能です。最も簡単な方法は、取得/更新/マージ/削除するエンティティの PartitionKey と RowKey を取得することです。

すべての REST の例があります (テーブル クエリとエンティティ クエリ用): http://msdn.microsoft.com/en-us/library/dd179423.aspx

于 2010-07-29T21:47:45.670 に答える
0

私の最初の問題は、Autorization ヘッダーが正しくないという事実によるものでした。
キーを追加したところですが、実際にはキーを使用して行う必要があることがいくつかあります。文字列に署名し、それを Autorization ヘッダーに追加します。
詳細はこちら

では、なぜ@Jasonの回答を有効とマークしたのですか? 私の仮定が間違っていたからです。テーブルのスキーマがわからない場合でも、Azure テーブル内のエンティティに対してクエリを実行する方法があります。そして、ジェイソンの投稿は私の道を示しました。

于 2010-03-06T12:42:36.073 に答える