2017-04-15 36 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:\驱动器创建和写入日志文件。不允许标准用户抛出异常。 这导致我没有显示没有实际相关的互联网错误。