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 回答