2010-09-09 52 views
1

我正在將腳趾浸入Windows Azure中,並且我遇到了一些必須簡單的事情,但我無法看到它。從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.開發者商店服務正在運行;我可以看到消息進入隊列,我無法刪除它們。

任何人都見過類似的東西嗎?

回答

3

我想清楚發生了什麼事。有問題的代碼在xUnit測試工具中運行。事實證明,默認情況下,xUnit runner沒有設置帶有配置文件路徑的appdomain。 System.UriBuilder現在碰到配置文件,所以它爆炸了。

解決方法是將一個空的app.config添加到測試項目。現在它可以工作。

ARGH!

+0

昨天xUnit團隊修復了這個問題 - http://xunit.codeplex.com/Thread/View.aspx?ThreadId=226567 – 2010-09-11 22:50:43

相關問題