2010-03-02 3 views
3

그래서이 스키마를 모르는 테이블에서 Azure 테이블 스토리지의 엔터티를 쿼리해야하는이 응용 프로그램이 있습니다.Azure 테이블 엔터티에 액세스

1) Storageclient wrapper로 할 수있는 방법이 있습니까?
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(); 
+0

은 누구에게 내 태그를 편집 : 친구! 왜 그냥 하늘? Windows Azure는 꽤 큽니다 ... 그리고 스토리지 계정의 테이블에만 관련되어 있습니다 ... – sebagomez

+0

불행히도 Microsoft는 테이블 스토리지를위한 REST 레벨 API를 현재 제공하지 않습니다 (이미 불만을 토로했는데 http : // vermorel을 참조하십시오). .com/journal/2010/1/15/fat-entities-for-table-storage-in-lokadcloud.html) ADO.NET 클라이언트는 일반 입력이 아닙니다. 이 시점에서 나는 포기하고 Microsoft가 괜찮은 클라이언트 lib를 제공 할 때까지 기다릴 것을 제안합니다. –

답변

2

예, 가능합니다. 다음 주소로 문의하는 것이 좋습니다 : http://social.msdn.microsoft.com/Forums/en-US/windowsazure/thread/481afa1b-03a9-42d9-ae79-9d5dc33b9297/

좋은 코드 예제를 제공하므로 자세히 설명하지 않겠습니다. 이 코드는 내 AzureTableQuery 프로젝트에서 엔티티의 속성을 찾는 데 사용하는 코드입니다. 코드를 살펴 본다면 GenericTableContext.csGenericEntity.cs 클래스를 확인하십시오.

+0

감사합니다 @ 제이슨, 훌륭한 솔루션! – sebagomez

0

내 초기 문제는 필자의 Autorization 헤더가 맞지 않아서였습니다.
저는 키를 추가하는 중이었습니다. 실제로 키로해야 할 일이 있습니다. 문자열에 서명하고 Autorization 헤더에 추가해야합니다.
자세한 정보 here.

왜 @ Jason의 답변을 유효한 것으로 표시 했습니까? 내 가정이 잘못 되었기 때문에. 테이블의 스키마를 모를지라도 Azure 테이블에서 엔터티를 쿼리하는 방법이 있습니다. 제이슨의 게시물은 제 길을 보여줬습니다.

0

Windows Azure 테이블은 OData (odata.org) 프로토콜을 통해 쿼리 할 수 ​​있습니다. 가장 쉬운 방법은 가져 오기/업데이트/병합/삭제를 원하는 엔티티의 PartitionKey 및 RowKey를 갖는 것입니다.

모든 REST 예제 (테이블 쿼리 및 개체의 쿼리)이 있습니다 : http://msdn.microsoft.com/en-us/library/dd179423.aspx