2014-03-04 77 views
3

我正在編寫一個旨在聯機和脫機工作的Windows Phone 8應用程序。要做到這一點,它需要能夠檢查互聯網連接。這沒問題,如果沒有連接,或者有連接,但如果用戶連接到一個wifi熱點,但他們沒有通過身份驗證,那麼我需要返回一個「無連接」狀態。但是,即使嘗試捕獲,似乎也無法使用WebClient或HttpWebRequest捕獲System.Net.WebException錯誤。我搜索瞭解決方案,但似乎沒有工作 - 任何幫助,將不勝感激。Windows Phone 8連接檢查WebClient拋出可怕System.Net.WebException

這裏是我的連接校驗碼:

public async Task<bool> tskbooCheckConnectionSimpleNoQueue() 
    { 
     bool booHasConnection = false; 
     bool isNetwork = NetworkInterface.GetIsNetworkAvailable(); 
     if (!isNetwork) 
     { 
      booHasConnection = false; 
      IsolatedStorageSettings.ApplicationSettings["booHasConnection"] = false; 
      return booHasConnection; 
     } 
     else 
     { 
      //actually check connection 
      WebClient wcConnectionCheck = new WebClient(); 
      string strData = ""; 
      string strConnectionCheck = "https://urltocheckconnection.com/connectioncheckmethod"; 
      try 
      { 
       strData = await wcConnectionCheck.DownloadStringTaskAsync(new Uri(strConnectionCheck)); //exception thrown here 
       if (strData.ToString().Contains("success")) 
       { 
        booHasConnection = true; 
        IsolatedStorageSettings.ApplicationSettings["booHasConnection"] = true; 
        return booHasConnection; 
       } 
       else 
       { 
        booHasConnection = false; 
        IsolatedStorageSettings.ApplicationSettings["booHasConnection"] = false; 
        return booHasConnection; 
       } 
      } 
      catch (WebException ex) 
      { 
       booHasConnection = false; 
       IsolatedStorageSettings.ApplicationSettings["booHasConnection"] = false; 
       return booHasConnection; 
      } 
     } 
    } 
+0

該代碼看起來對我來說很合適。你確定沒有其他的異常類型被拋出嗎? –

+0

是的,如果你有一個連接,代碼工作正常,但如果它不能連接,那麼它會拋出System.Net.WebException「Not Found」。實際發生的情況是WiFi代理重定向任何流量,因此無法解析服務URL,因此無法找到。這很好,但我只需要能夠處理它! – James

+0

你是否檢查過瘋狂的東西,比如你的catch中的'WebException'解析爲本地類型而不是'System.Net.WebException'? –

回答

2

聽起來像是你有捕捉處理的異常開啓。

在visual studio中,點擊'Debug'菜單並選擇'Exceptions'。

在「公共語言運行時例外」項目下,取消選中「投擲」列。

您的調試器將不再中斷,並且異常將被捕獲。

enter image description here

+0

謝謝 - 你是對的。我之前實際上已經通過解除system.net.webexception來嘗試此操作。這個解決方案雖然有問題,但是: - 一旦進入捕獲,代碼運行非常緩慢。 - 這不會影響所有Visual Studio項目嗎? - 這真的是處理這個問題的最好方法嗎?感覺像一個醜陋的黑客... – James

+1

你看到的是'第一次機會例外',這不是黑客 - 調試器告訴你發生了異常。你不需要知道,因爲你正確地處理它。我通常在關閉此選項的情況下工作,並且只在我正在主動調試我的項目並希望查找發生的不在正確位置處理的異常時纔將其打開。 –

+0

好的。感謝您的幫助 - 非常感謝。 – James

相關問題