Использование DefaultCredentials в GetSystemWebProxy на C# NetFramework
Есть простой код на c#, который должен отправлять json-данные методом POST и получать ответ:
var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "POST";
IWebProxy proxy = WebRequest.GetSystemWebProxy();
//proxyCredentials = new NetworkCredential("user", "password"); // замените на ваши данные
proxy.Credentials = CredentialCache.DefaultCredentials;
httpWebRequest.Proxy = proxy;
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
string json = Encoding.UTF8.GetString(data);
streamWriter.Write(json);
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
string result = null;
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
result = streamReader.ReadToEnd();
}
Console.WriteLine(result);
При использовании DefaultCredentials или DefaultNetworkCredentials неизменно получаю ошибку 407: Требуется аутентификация посредника. При использовании NetworkCredential("user", "password") все работает хорошо. Но вопрос как раз в том, как заставить c# использовать Windows-учетные данные текущего пользователя. По аналогии с простым браузером, у которого указан прокси. Пользователю же не приходится вводить повторно логин-пароль при работе с браузерами.
Все поиски по использованию учетных данных текущего пользователя приводят к DefaultCredentials или DefaultNetworkCredentials, но они не работают.
Вопрос: как правильно использовать учетные данные пользователя с GetSystemWebProxy?