Frage

ich meine Zehen in Windows Azure Tauchen, und ich laufe in etwas, das einfach sein, aber ich kann einfach nicht sehen.

Ich habe diesen kleinen Test mit Azure-Warteschlangen zu spielen:

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);
}

Es sendet die Nachricht ganz gut - ich habe es in der SQL-Tabelle sehen. Wenn es jedoch die „testQueue.DeleteMessage (empfangen)“ Methode trifft, bekomme ich diese:

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

, die ein Fehler irgendwo in den Eingeweiden des Azure SDK zu sein scheint.

Ich bin mit VS 2010, .NET 4.0, das Azure SDK V1.2, 64-Bit-Win 7. Der Entwickler Speicherdienst ausgeführt wird; Ich kann die Nachrichten gehen in die Warteschlange sehen, ich kann einfach nicht löschen.

Wer jemals so gesehen etwas?

War es hilfreich?

Lösung

Ich fand heraus, was los ist. Der Code in Frage wurde in einer xUnit Testumgebung läuft. Stellt sich heraus, dass der xUnit Läufer nicht gesetzt eine Appdomain mit einer Konfigurationsdatei Pfad standardmäßig nicht auf. System.UriBuilder schlägt nun die Config-Datei, so dass es explodiert.

Die Abhilfe war ein leeres app.config zum Test Projekt hinzuzufügen. Jetzt funktioniert es.

Argh!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top