質問

つま先を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(receive)」メソッドに当たった場合、これは次のとおりです。

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ビットの勝利7を使用しています。開発者ストアサービスが実行されています。メッセージがキューに入るのを見ることができます。削除できません。

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

役に立ちましたか?

解決

私は何が起こっているのかを理解しました。問題のコードは、Xunitテストハーネスで実行されていました。 Xunitランナーは、デフォルトで構成ファイルパスを備えたAppDomainを設定しないことがわかりました。 System.uribuilderが構成ファイルにヒットするようになり、爆発します。

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

ああ!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top