Исключение при удалении сообщения из очереди Azure? - PullRequest
1 голос
/ 09 сентября 2010

Я погружаю свои пальцы в Windows Azure и сталкиваюсь с тем, что должно быть простым, но я просто не вижу этого.

У меня есть небольшой тест, чтобы поиграть с Azurequeues:

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. Служба магазина разработчика работает;Я вижу, как сообщения попадают в очередь, я просто не могу их удалить.

Кто-нибудь когда-либо видел что-либо подобное?

1 Ответ

3 голосов
/ 09 сентября 2010

Я понял, что происходит. Код, о котором идет речь, был запущен в тестовом комплекте xUnit. Оказывается, что бегун xUnit не устанавливает домен приложения с путем к файлу конфигурации по умолчанию. System.UriBuilder теперь попадает в файл конфигурации, поэтому он взрывается.

Обходным решением было добавить пустой app.config в тестовый проект. Теперь это работает.

ARGH!

...