Замучил гугл и поиск rsdn — предлагаемые решения не работают.
Что есть:
1. Корпоративный прокси squid, NTLM-аутентификация.
2. Удалённый веб-сервис (С#).
3. Приложение (Windows Application, С#), вызывающее метод веб-сервиса.
Что происходит:
При попытке вызова метода сервиса из приложения вылетает ошибка (407) Proxy Authentication Required.
При этом:
IE ходит нормально, после вводя логина и пароля.
WebReference был сделан ещё в те времена, когда прокси не требовал аутентификации, сейчас Студия WebReference делать не хочет.
Делаю так:
My_WebService myWS = new My_WebService();
myWS.Url = "https://.../MyWebService.asmx";
// ЧТОБЫ ПОДДЕРЖАТЬ ЦЕЛОСТНОСТЬ ВЕБ-СЕССИИ.
CookieContainer cookieContainer = new CookieContainer();
myWS.CookieContainer = _cookieContainer;
// Достаём из локального хранилища сертификат и тянем его в прокси-класс.
myWS.ClientCertificates.Add(GetCertificateBySerialNumber(serial_num));
// Ходим через корпоративный прокси.
myWS.Proxy = WebRequest.DefaultWebProxy;
myWS.UseDefaultCredentials = true;
// Пробовал и так:
//myWS.Credentials = CredentialCache.DefaultCredentials;
//myWS.Proxy.Credentials = CredentialCache.DefaultCredentials;
// Дёргаем метод веб-сервиса.
String s = myWS.TestProxy(); // На этой строке вылетает ошибка 407.
MessageBox.Show(s);
Спасите помогите! Я слово волшебное знаю
— пожалуйста.
Здравствуйте, ada_corpit, Вы писали:
_>Замучил гугл и поиск rsdn — предлагаемые решения не работают.
_>Что есть:
_>1. Корпоративный прокси squid, NTLM-аутентификация.
_>2. Удалённый веб-сервис (С#).
_>3. Приложение (Windows Application, С#), вызывающее метод веб-сервиса.
_>Что происходит:
_>При попытке вызова метода сервиса из приложения вылетает ошибка (407) Proxy Authentication Required.
_>При этом:
_>IE ходит нормально, после вводя логина и пароля.
_>WebReference был сделан ещё в те времена, когда прокси не требовал аутентификации, сейчас Студия WebReference делать не хочет.
_>Делаю так:
_>_>My_WebService myWS = new My_WebService();
_>myWS.Url = "https://.../MyWebService.asmx";
_>// ЧТОБЫ ПОДДЕРЖАТЬ ЦЕЛОСТНОСТЬ ВЕБ-СЕССИИ.
_>CookieContainer cookieContainer = new CookieContainer();
_>myWS.CookieContainer = _cookieContainer;
_>// Достаём из локального хранилища сертификат и тянем его в прокси-класс.
_>myWS.ClientCertificates.Add(GetCertificateBySerialNumber(serial_num));
_>// Ходим через корпоративный прокси.
_>myWS.Proxy = WebRequest.DefaultWebProxy;
_>myWS.UseDefaultCredentials = true;
_>// Пробовал и так:
_>//myWS.Credentials = CredentialCache.DefaultCredentials;
_>//myWS.Proxy.Credentials = CredentialCache.DefaultCredentials;
_>// Дёргаем метод веб-сервиса.
_>String s = myWS.TestProxy(); // На этой строке вылетает ошибка 407.
_>MessageBox.Show(s);
_>
_>Спасите помогите! Я слово волшебное знаю — пожалуйста.
//вариант №1
My_WebService myWS = new My_WebService();
// определяем настройки прокси-сервер по умолчанию
myWS.Proxy = WebRequest.DefaultWebProxy;
//устанавливаем сетевые учетные данные текущего пользователя или приложения
myWS.Proxy.Credentials = CredentialCache.DefaultNetworkCredentials;
//вариант №2
WebProxy myWP = new WebProxy("<IP прокси>:<порт>", false);
myWP.Credentials = new NetworkCredential("логин", "пароль", "домен");
myWS.Proxy = myWP;