2010-11-05 82 views
4

我正在構建一個wp7應用程序。我使用WebClient從服務器獲取數據。過去,它一直在工作,儘管突然間它失敗了。WebClient失敗,遠程服務器「NotFound」

static void downloadData(string uri, Action<object, DownloadStringCompletedEventArgs> onComplete) 
    { 
     Debug.WriteLine("Downloading: " + uri); 
     WebClient data = new WebClient(); 
     data.DownloadStringCompleted += new DownloadStringCompletedEventHandler(onComplete); 
     data.DownloadStringAsync(new Uri(uri)); 
    } 

    static void data_SectionDownloadCompleted(object sender, DownloadStringCompletedEventArgs e) 
    { 
     if (e.Error != null) 
     { 
      // throws NotFound 
      throw e.Error; 
     } 

     // ... 
    } 

當我在瀏覽器中訪問有問題的URI時,它工作正常。

例外:

"The remote server returned an error: NotFound." {System.Net.WebException} 

我在做什麼錯在這裏?

更新:我重新啓動了模擬器,現在它工作正常。奇怪的。也許這是模擬器中的問題?希望我不能在實際的設備上重現它。

+0

我開始與我的Azure存儲模擬器一個blob文件中獲取此。我確定我將容器設置爲「公開」,但我一直收到WebClient NotFound錯誤。我可以通過Internet Explorer訪問azure blob。 – markti 2012-09-07 01:36:04

回答

0

我有類似的模擬器經驗。在測試任何使用網絡的應用程序之前,我經常打開Internet Explorer並瀏覽網站。另外,最好不要更改運行仿真器的機器的IP地址,DHCP或手動。最後,我建議您處理任何錯誤情況,並在MessageBox中顯示一條錯誤消息。

HTH,indyfromoz

0

我也有這個偶爾。即使在真實的設備上。重試通常會修復它。

不幸的是,這是您需要了解和編寫代碼以適應在偶爾連接的環境中工作的問題之一。

1

NotFound是一個通用的錯誤,基本上意味着'錯誤'。背後有一個真正的例外,你需要挖掘發現。我找到的最簡單的方法是Intellitrace,它允許您查看您的Web服務器上發生的每個異常。如果您在NotFound之前查看,您會發現支持它的真正例外。

如果Intellitrace不是一個選項,請在您的服務器和客戶端上添加更多/更好的日誌記錄。谷歌有許多技巧,更深入調試一個很好的例子:

http://www.mostlydevelopers.com/blog/post/2009/01/14/debugging-tips-ndash3b-the-remote-server-returned-an-error-notfound.aspx

相關問題