C# HttpWebRequest с учетными данными прокси не передает учетные данные на прокси-сервер
В настоящее время я следую за чем-то похожим на это:
HttpWebRequest myWebRequest = (HttpWebRequest) WebRequest.Create("http://www.microsoft.com");
IWebProxy proxy = myWebRequest.Proxy;
Uri newUri = new Uri(proxyAddress);
myProxy.Address = newUri;
... (setting of username/password for proxy)
myProxy.Credentials = new NetworkCredential(username, password);
myWebRequest.Proxy = myProxy;
HttpWebResponse myWebResponse = (HttpWebResponse) myWebRequest.GetResponse();
Я запускаю код из размещенного в IIS 7.5 приложения, которое должно проверить, что URL-адреса доступны для контакта, прежде чем процесс продолжится. Поскольку у службы не должно быть доступа к внешнему миру, мне нужно использовать определенный прокси-сервер с учетными данными, предоставленными мне нашим ИТ-отделом.
К сожалению, независимо от того, что я пытаюсь (system.net/default прокси в app.config, со связанным классом модуля для создания URL-адреса и учетных данных, или что-то вроде выше)), прокси-сервер не получает эти учетные данные, переданные ему,
Я что-то пропустил? Я попытался запустить его из веб-приложения VS2010 в режиме отладки, когда приложение запускается из IIS с идентификатором пула приложений по умолчанию. и то же самое с сервера в нашей среде QA, и ничего не меняется - он либо вообще не использует прокси, либо просто не отправляет учетные данные.
Я также пытался установить PreAuthenticate = true
а также UseDefaultCredentials
оба к true
И к, и без изменений.
Есть идеи о том, что мне не хватает?
1 ответ
Изменить: Извините, сначала неправильно понял ваш вопрос - исправленный ответ ниже:
Я хотел бы попытаться создать новый объект WebProxy, установить его учетные данные, а затем установить его в качестве прокси-сервера вашего запроса (вместо того, чтобы получать существующий объект-прокси из запроса и изменять его):
HttpWebRequest myWebRequest =
(HttpWebRequest) WebRequest.Create("http://www.microsoft.com");
IWebProxy proxy = new WebProxy(proxyAddress);
string proxyUsername = @"foo";
string proxyPassword = @"bar";
proxy.Credentials = new NetworkCredential(proxyUsername, proxyPassword);
myWebRequest.Proxy = proxy;