1

Windows Azure に足を踏み入れていて、単純でなければならない何かに出くわしていますが、それが見えません。

Azure キューで遊ぶためのこの小さなテストがあります。

public void CanPublishSillyLittleMessageOnQueue()
{
    var queueClient = CloudStorageAccount.DevelopmentStorageAccount.CreateCloudQueueClient();
    var testQueue = queueClient.GetQueueReference("testqueue1");

    testQueue.CreateIfNotExist();
    var message = new CloudQueueMessage("This is a test");
    testQueue.AddMessage(message);

    CloudQueueMessage received;

    int sleepCount = 0;
    while((received = testQueue.GetMessage()) == null)
    {
        ++sleepCount;
        Thread.Sleep(25);
    }
    testQueue.DeleteMessage(received);

    Assert.Equal(message.AsString, received.AsString);
}

メッセージは問題なく送信されます-SQLテーブルで確認できます。ただし、「testQueue.DeleteMessage(received)」メソッドにヒットすると、次のようになります。

TestCase 'AzureExploratory.PlayingWithQueues.CanPublishSillyLittleMessageOnQueue'
failed: System.ArgumentNullException : Value cannot be null.
Parameter name: str
    at Microsoft.WindowsAzure.StorageClient.Tasks.Task`1.get_Result()
    at Microsoft.WindowsAzure.StorageClient.Tasks.Task`1.ExecuteAndWait()
    at Microsoft.WindowsAzure.StorageClient.TaskImplHelper.ExecuteImplWithRetry(Func`1 impl, RetryPolicy policy)
    at Microsoft.WindowsAzure.StorageClient.CloudQueue.DeleteMessage(CloudQueueMessage message)
    PlayingWithQueues.cs(75,0): at AzureExploratory.PlayingWithQueues.CanPublishSillyLittleMessageOnQueue()

これは、Azure SDK の内部のどこかで失敗したようです。

VS 2010、.NET 4.0、Azure SDK V1.2、64 ビット Win 7 を使用しています。開発者ストア サービスが実行されています。メッセージがキューに入ることはわかりますが、削除することはできません。

誰もこのようなものを見たことがありますか?

4

1 に答える 1

3

私は何が起こっているのかを理解しました。問題のコードは、xUnit テスト ハーネスで実行されていました。xUnit ランナーは、デフォルトで構成ファイル パスを使用して appdomain をセットアップしないことが判明しました。System.UriBuilder が構成ファイルにヒットするようになったため、爆発します。

回避策は、空の app.config をテスト プロジェクトに追加することでした。今では動作します。

アー!

于 2010-09-09T06:28:39.187 に答える