Исключение при удалении сообщения из очереди Azure?
-
01-10-2019 - |
Вопрос
Я погружаю пальцы ног в 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.deledeMessage (полученный)», я получу это:
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. Получается, что Runner XUNIT не устанавливает AppDomain с конфигурацией файла файла по умолчанию. System.uribuilder теперь попадает в файл конфигурации, поэтому он дует вверх.
Обходной путь состоял в том, чтобы добавить пустое приложение.config в тестовый проект. Теперь это работает.
Argh!