2017-04-15 4 views
0

Voici le code que j'utilise pour vérifier la connexion Internet. Mais ça échoue toujours. Cela fonctionne très bien avec mon utilisateur admin mais ne fonctionne pas pour l'utilisateur standard (sans privilège) que j'ai fait. Ce qui pourrait manquer ici ..WPF C# - Utilisateur standard (non privilégié) qui ne peut pas accéder au client 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 est comme ci-dessous.

[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

Cochez cette réponse pour les droits d'administrateur requis pour que le client WCF exécute http://stackoverflow.com/a/7804293/920557 –

Répondre

1

Mon problème était un peu à l'écart mais peut aider n'importe qui. Il était dans cette ligne Log.Instance.WriteLine("new webclient"); Cette ligne créait et écrivait le fichier journal dans le lecteur C:\. Ce qui n'était pas autorisé à l'utilisateur standard et l'exception de lancement. ce qui m'a conduit à ne montrer aucune erreur internet qui n'était pas réellement liée.