2017-04-15 7 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:\ドライブにログファイルを作成して書きました。標準のユーザーと例外をスローすることはできませんでした。 実際には関連していないインターネットエラーは表示されません。

関連する問題