我将脚趾浸入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(接收)”方法时,我明白了:

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.开发人员商店服务正在运行;我可以看到消息进入队列,我只是无法删除它们。

有人见过这样的东西吗?

有帮助吗?

解决方案

我弄清楚了发生了什么。所讨论的代码在Xunit测试安全带中运行。事实证明,Xunit Runner默认情况下没有使用配置文件路径设置AppDomain。 System.uribuilder现在命中配置文件,因此它会炸毁。

解决方法是在测试项目中添加一个空的app.config。现在起作用。

arg!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top