Pregunta

Me estoy mojando mis dedos del pie en Windows Azure, y yo estoy corriendo en algo que tiene que ser simple, pero simplemente no puede verlo.

Tengo esta pequeña prueba para jugar con colas de 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);
}

Se envía el mensaje bien - me puedo ver en la tabla de SQL. Sin embargo, cuando llega el "testQueue.DeleteMessage (recibido)" método, me sale esto:

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()

que parece ser un fallo en algún lugar abajo dentro de las tripas del SDK de Azure.

Estoy usando VS 2010, .NET 4.0, el Azure SDK V1.2, 64 bits Win 7. El servicio de almacén de desarrollador se está ejecutando; Puedo ver los mensajes entran en la cola, simplemente no puedo eliminarlos.

Cualquiera que he visto algo como esto?

¿Fue útil?

Solución

me di cuenta de lo que está pasando. El código en cuestión se ejecuta en un instrumento de prueba xUnit. Resulta que el corredor xUnit no establece un dominio de aplicación con una ruta de archivo de configuración por defecto. System.UriBuilder ahora golpea el archivo de configuración, por lo que explota.

La solución fue añadir un app.config vacía para el proyecto de prueba. Ahora funciona.

ARGH!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top