WPF C# - Стандартный (не привилегированный) пользователь не может получить доступ к веб-клиенту?
Вот код, который я использую для проверки интернет-соединения. Но это всегда терпит неудачу. Это нормально работает с моим администратором, но не работает для обычного (не привилегированного) пользователя, которого я создал. Чего не хватает здесь..
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;
}
1 ответ
Решение
Моя проблема была немного в стороне, но может помочь любому. Это было в соответствии с этим Log.Instance.WriteLine("new webclient");
Эта строка создавала и записывала файл журнала в C:\
привод. Который не был допущен обычным пользователем и выкидывал исключение. что привело меня к отсутствию интернет-ошибки, которая на самом деле не была связана.