Re: Web Service + proxy NTLM + Windows Application = error 4
От: alandor  
Дата: 04.08.09 05:45
Оценка:
Здравствуйте, 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;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.