2017-03-08 3 views
0

저는 로컬 컴퓨터에서 Azure 테이블 스토리지를 사용하기 시작했습니다 (스토리지 에뮬레이터를 통해). 나는 일부 자원 키를 테이블 스토리지에 저장하고있다. 그러나 파티션 키, 행 키 또는 두 가지 모두를 사용하여 SQL Server Management Studio를 통해 테이블을 쿼리 할 때 아무런 결과가 반환되지 않습니다.Azure 테이블 스토리지 에뮬레이터가 파티션 및 행 키에 SOH 문자를 추가합니다.

쿼리가 실행
public async Task<TEntity> GetItemAsync(string partitionKey, string rowKey) 
    { 
     var table = client.GetTableReference(TableName); 

     var retrieveOperation = TableOperation.Retrieve<TEntity>(partitionKey, rowKey); 

     var retrievedResult = await table.ExecuteAsync(retrieveOperation); 

     if (retrievedResult.Result != null) 
     { 
      return (TEntity)retrievedResult.Result; 
     } 
     else 
     { 
      Trace.TraceWarning("The entity could not be retrieved."); 
      return null; 
     } 
    } 

, 결과는 HTTP를 포함 404

문제가 무엇인지 생각이 사람을 가지고 다음과 같이 테이블 저장을 쿼리

코드는 무엇입니까? 추가되는 SOH 문자와 관련이 있다면 Azure Table Storage가 그 문자를 추가하는 이유는 무엇입니까?

SSMS screenshot from TableRow table

귀하의 지원에 감사드립니다.

답변

0

누구에게 어떤 문제가있을 수 있습니까?

내가 아는 한 일반적으로 테이블이 존재하지 않으면 HTTP 404 오류가 발생합니다. 먼저 tablename이 존재하는지 확인하십시오.

추가되는 SOH 문자와 관련이 있다면 Azure Table Storage가 그 문자를 추가하는 이유는 무엇입니까?

Table Service Data Model 기사 이해에 따르면, 다음과 같은 문자가에 PartitionKey 및 RowKey 속성 값에서 허용되지 않습니다 제어 문자 U + 0000부터 U + 001F에 포함 :

  • 수평에게 탭 (\의 t) 문자
  • 라인 피드 (\ n)도 문자
  • 캐리지 리턴 (\ r에) 문자
  • U에서
  • 제어 문자 + 007F에 U + 009F

\ u0001은 허용되지 않습니다.

또한 컴퓨터에 테스트 데모를 작성했지만 파티션 키와 행 키에 제어 문자를 삽입 할 수 없습니다.

내 저장소 에뮬레이터 버전이 4.6이고 푸른 저장소 패키지 버전이 8.0.1 인 경우 제어 문자를 삽입 한 이유는 에뮬레이터 버전과 패키지 버전에 대한 것입니다.

에뮬레이터에 대한 최신 버전을 설치하고 다시 시도해보십시오.

다운로드 링크 : 테이블 속성 유형이 Edm.String 경우 https://azure.microsoft.com/en-us/downloads/

게다가, 난 당신이 삽입 값이 UFT-16로 인코딩 된 값입니다 확인 할 수 좋습니다.

Edm.String : UTF-16으로 인코딩 된 값입니다. 문자열 값은 최대 크기가 64KB입니다.

관련 문제