2017-03-08 5 views
0

ローカルコンピュータ(Storage Emulator経由)で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)が文字
  • にU + 007Fからキャリッジリターン(\ r)が文字
  • 制御文字U + 009F

\ u0001は許可されていません。

私もコンピュータにテストデモを書いていますが、パーティションキーと行キーに制御文字を挿入できませんでした。

私のストレージエミュレータのバージョンは4.6で、Azureストレージパッケージのバージョンは8.0.1です。コントロール文字を挿入した理由は、エミュレータのバージョンとパッケージのバージョンに関するものだと思います。

エミュレータに関する最新のバージョンをインストールして、やり直すことをお勧めします。

ダウンロードリンク:他にhttps://azure.microsoft.com/en-us/downloads/

テーブルのプロパティタイプがEdm.Stringであれば、私はあなたの挿入値はUFT-16でエンコードされた値であることを確認することができ示唆しています。

Edm.String:UTF-16でエンコードされた値。文字列の値は、最大で 64 KBです。

関連する問題