2012-04-28 37 views
1

大約3個月,我有一個使用WebClient調用某些HTTPS API的公共應用程序。 直到大約3個星期前,一切正常,但突然間,應用程序停止工作,所有WebClient調用都拋出「遠程服務器返回錯誤:NotFound。」例外。使用WebClient調用HTTPS URL的例外

我沒有以任何方式更新我的應用程序,API沒有更改,我沒有注意到Windows Phone的任何更新。 我提到我的應用程序是針對Windows Phone OS 7.1,我也嘗試使用HttpWebRequest類 - 結果是一樣的。 我的代碼看起來是這樣的:

private void tile_Tap(object sender, System.Windows.Input.GestureEventArgs e) 
    { 
     WebClient wc = new WebClient(); 
     wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted);    

     wc.OpenReadAsync(new Uri("https://www.google.com")); 
    } 

    void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e) 
    { 
     try { 
      StreamReader s = new StreamReader(e.Result); 
      string r = s.ReadToEnd(); 
      MessageBox.Show(r); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 

該代碼會在每次它被稱爲與上述異常時失敗。如果我嘗試獲取「http://www.google.com」或任何其他HTTP網址,則代碼將正常工作。 但是,我需要使用HTTPS,因爲我需要通過WebClient調用發送證書。

我在互聯網上發現,去年其他人遇到過這樣的問題,但是這個問題應該在芒果更新中解決。

有沒有人知道如何解決這個問題或任何解決方法,因爲我用盡了想法。

預先感謝您!

問候, 安德烈

回答

0

首先NOTFOUND錯誤是一般性一個,讓你需要使用諸如Fiddler工具中遇到的具體問題(與模擬器:http://blogs.msdn.com/b/fiddler/archive/2010/10/15/fiddler-and-the-windows-phone-emulator.aspx /與設備:http://blogs.msdn.com/b/fiddler/archive/2011/01/09/debugging-windows-phone-7-device-traffic-with-fiddler.aspx

現在也許這是SSL證書的問題?如果您使用桌面瀏覽器訪問相同的網址,您是否會收到關於其有效性的警告/錯誤?如果是的話,你運氣不好,因爲我認爲你可以重寫Windows Phone上的證書驗證,就像桌面上的fwk一樣。

但是首先嚐試用Fiddler進行調試以獲取一些細節。

+0

我用戶Fiddler(Wireshark)以及我注意到它建立了一個連接,但實際的請求不是從設備發送的。這非常奇怪,因爲相同的代碼在大約2個月內工作正常並且突然停止工作(對於我和我的應用的其他用戶) - 這沒有任何改變。 – AndreiC 2012-04-29 10:38:17

+0

您是否安裝了Fiddler SSL證書?您看到的請求是HTTP握手而非實際的HTTPS請求。在設備/模擬器上,打開瀏覽器並訪問http:// computername:8888 /並單擊「安裝證書」鏈接。之後,你應該能夠得到細節。 – MatthieuGD 2012-04-29 17:18:31

+0

嗨,對於我的回覆延遲抱歉。我在模擬器上安裝了Fiddler證書,並且對https://google.com的呼叫開始工作。然而,在我的公共應用程序中對Delicious API的調用仍然失敗,並顯示相同的消息... – AndreiC 2012-05-02 13:51:28