0

問題: Azure ストレージ エミュレーターは BLOB とテーブル ストレージを開始できますが、キュー ストレージは開始できず、エラー ダイアログが表示されます。環境ストレージ クライアント。これが私がやったことです...

ポート 10001 は Queue Storage のデフォルト ポートであるため、私が行ったいくつかの関連記事に基づいています (出力の最後の列はプロセスの PID です)。

    c:\...> netstat -p tcp -ano | findstr :1000
  TCP    0.0.0.0:10001          0.0.0.0:0              LISTENING       2628
  TCP    127.0.0.1:10000        0.0.0.0:0              LISTENING       4
  TCP    127.0.0.1:10002        0.0.0.0:0              LISTENING       4

ここでの大きな問題は、10001 でリッスンしているのは McAfee であり、それを変更できないことです。

次の手順では、10001 を使用しないようにキュー ストレージを再構成します。使用可能なポートでリッスンするようにストレージ エミュレーターを再構成します。開ける:

%PROGRAMFILES%\Microsoft SDKs\Windows Azure\Emulator\devstore\DSServiceLDB.exe.config

お気に入りのテキスト エディターで、キュー ストレージのバインドを変更します。私の場合、10003 が利用可能でした。

<?xml version="1.0"?>
<configuration>
  <configSections>    
    <section name="developmentStorageConfig" type="Microsoft.ServiceHosting.DevelopmentStorage.Utilities.DevelopmentStorageConfigurationHandler, DevelopmentStorage.Common"/>
  </configSections>

  <developmentStorageConfig>
    <services>
      <service name="Blob" url="http://127.0.0.1:10000/"/>
      <service name="Queue" url="http://127.0.0.1:10003/"/> <!-- this line here -->
      <service name="Table" url="http://127.0.0.1:10002/"/>
    </services>
...

shutodwn を実行してストレージ エミュレーターを起動すると、すべて正常に動作するはずです。

c:\...netstat -p tcp -ano | findstr :1000
  TCP    0.0.0.0:10001          0.0.0.0:0              LISTENING       2628
  TCP    127.0.0.1:10000        0.0.0.0:0              LISTENING       4
  TCP    127.0.0.1:10002        0.0.0.0:0              LISTENING       4
  TCP    127.0.0.1:10003        0.0.0.0:0              LISTENING       4

現在、VS2012 でクライアントを構成しようとしても機能しません...次の設定で構成ファイル ServiceConfiguration.Cloud.cscfg を変更しました。

<Setting name="StorageConnectionString" value="BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;QueueEndpoint=http://127.0.0.1:10003/devstoreaccount1;TableEndpoint=http://127.0.0.1:10002/devstoreaccount;AccountName=devstoreaccount;AccountKey=key copied from storage config file" />

しかし、キューに接続しようとすると 404 が返され、存在しない場合は create を呼び出します。

    storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
    queueClient = storageAccount.CreateCloudQueueClient();
    queue = queueClient.GetQueueReference("testqueue");
    queue.CreateIfNotExist();

これを少し調整した後...開発設定を使用している場合にストレージクライアントが何をしているかを調べ、System.Diagnostics.Debugger.IsAttachedブロックでコードを複製しました。また、キューの名前付けが悪いことに気付きました (クライアントを接続すると、400 エラーが返されました)。

if (System.Diagnostics.Debugger.IsAttached)
        {
            var blobEndpoint = new Uri("http://127.0.0.1:10000/devstoreaccount1");
            var queueEndpoint = new Uri("http://127.0.0.1:10003/devstoreaccount1");
            var tableEndpoint = new Uri("http://127.0.0.01:10002/devstoreaccount1");
            var storageCreds = new StorageCredentialsAccountAndKey("devstoreaccount1", "Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==");

            _storageAccount = new CloudStorageAccount(storageCreds, blobEndpoint, queueEndpoint, tableEndpoint);
        }
        else
        {
            _storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
        }
        _queueClient = _storageAccount.CreateCloudQueueClient();
        /* Queue naming rules:
         *  1. A queue name must start with a letter or number, and can only contain letters, numbers, and the dash (-) character. 
            2. The first and last letters in the queue name must be alphanumeric. The dash (-) character cannot be the first or last character. Consecutive dash characters are not permitted in the queue name.
            3. All letters in a queue name must be lowercase.
            4. A queue name must be from 3 through 63 characters long.
         */
        _queue = _queueClient.GetQueueReference("myqueuename");
        _queue.CreateIfNotExist();  
4

1 に答える 1

1

このディレクトリ(C:\ Program Files \ Microsoft SDKs \ Windows Azure \ Emulator \ devstore)を調べて、DSServiceLDB.exe.configのポート構成を変更します。

<services>
<service name="Blob" url="http://127.0.0.1:10000/"/>
<service name="Queue" url="http://127.0.0.1:10003/"/>
<service name="Table" url="http://127.0.0.1:10002/"/>
</services>

10001でも同じ問題が発生しました。

于 2012-12-24T22:31:56.463 に答える