2017-04-15 83 views
0

這是我用來檢查互聯網連接的代碼。但它總是失敗。這對我的管理員用戶來說運行良好,但對於我製作的標準(非特權)用戶不起作用。這裏可能會丟失什麼......WPF C# - 標準(非特權)用戶無法訪問Web客戶端?

if (!App.IsInternetConnected) 
      { 
       await Task.Factory.StartNew(() => 
       { 
        App.IsInternetConnected = Utils.IsInternetConnected(); 
       }); 
      } 

      if (!App.IsInternetConnected) 
      { 
       App.ShowMessage("FeatureNotAvailable"); 
       LoginProgress.Visibility = System.Windows.Visibility.Hidden; 
       return; 
      } 


IsInternetConnected method is as below. 

internal static bool IsInternetConnected() 
    { 
     try 
     { 
      WebClient webclient = new WebClientPool().GetIdleWebClientObject(); 

      try 
      { 
      webclient.DownloadString("http://www.google.com"); 
      return true; 
     } 

    } 
    catch (Exception) 
    { 
      return false; 
    } 
    } 

GetIdleWebClientObject如下。

[MethodImpl(MethodImplOptions.Synchronized)] 
     public WebClient GetIdleWebClientObject() 
     { 
      foreach (WebClient item in WebClientItems) 
      { 
       if (!item.IsBusy) 
       { 
        Log.Instance.WriteLine("reused webclient"); 
        item.Headers.Clear(); 
        return item; 
       } 
      } 
      Log.Instance.WriteLine("new webclient"); 
      WebClient NewItem = new WebClient(); 
      NewItem.UseDefaultCredentials = true; 
      //NewItem.Credentials = CredentialCache.DefaultNetworkCredentials; 

      NewItem.Proxy = WebRequest.GetSystemWebProxy(); 
      WebClientItems.Add(NewItem); 
      return NewItem; 
     } 
+0

檢查此WCF客戶端運行所需的管理權限的答案http://stackoverflow.com/a/7804293/920557 –

回答

1

我的問題有點偏離,但可以幫助任何人。 這是排隊Log.Instance.WriteLine("new webclient");這條線是在C:\驅動器創建和寫入日誌文件。不允許標準用戶拋出異常。 這導致我沒有顯示沒有實際相關的互聯網錯誤。