Как автоматически разместить/использовать настройки прокси IE в .net httpwebrequest
-
18-09-2019 - |
Вопрос
Можно ли обнаружить/повторно использовать эти настройки?
Как ?
Исключение, которое я получаю, заключается в том, что это исключение при подключении к http://www.google.com
System.Net.WebException: Unable to connect to the remote server --->
System.Net.Sockets.SocketException: A connection attempt failed because the
connected party did not properly respond after a period of time, or established
connection failed because connected host has failed to respond 66.102.1.99:80
at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot,
SocketAddress socketAddress)
at System.Net.Sockets.Socket.InternalConnect(EndPoint remoteEP)
at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure,
Socket s4, Socket s6, Socket& socket, IPAddress& address,
ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout,
Exception& exception)
--- End of inner exception stack trace ---
at System.Net.HttpWebRequest.GetResponse()
at mvcTest.MvcApplication.Application_Start() in
C:\\home\\test\\Application1\\Application1\\Program.cs:line 33"
Решение
HttpWebRequest фактически будет использовать настройки прокси IE по умолчанию.
если ты не Хотите использовать их, вы должны специфически переопределить .proxy Proprty либо NULL (без прокси), либо на настройки прокси по вашему выбору.
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://news.bbc.co.uk");
//request.Proxy = null; // uncomment this to bypass the default (IE) proxy settings
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Console.WriteLine("Done - press return");
Console.ReadLine();
Другие советы
Я получал очень похожую ситуацию, когда HttpwebRequest не поднимал правильные данные прокси по умолчанию, и установление UseeFaultCredentials также не работало. Принуждая настройки в коде, однако обработал угощение:
IWebProxy proxy = myWebRequest.Proxy;
if (proxy != null) {
string proxyuri = proxy.GetProxy(myWebRequest.RequestUri).ToString;
myWebRequest.UseDefaultCredentials = true;
myWebRequest.Proxy = new WebProxy(proxyuri, false);
myWebRequest.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
}
И поскольку это использует учетные данные по умолчанию, он не должен запрашивать пользователя за их данные.
Обратите внимание, что это дубликат моего ответа, размещенного здесь для очень похожей проблемы: Прокси -базовая аутентификация в C#: http 407 Ошибка
Для людей, имеющих проблемы с тем, чтобы заставить это хорошо играть с ISA Server, вы можете попытаться настроить прокси следующим образом:
IWebProxy webProxy = WebRequest.DefaultWebProxy;
webProxy.Credentials = CredentialCache.DefaultNetworkCredentials;
myRequest.Proxy = webProxy;
Это происходит по умолчанию, если WebRequest.Proxy не установлен явно (по умолчанию это установлено на WebRequest.DefaultWebProxy
).