Я вызываю веб-сервис из приложения WinForms. Все работает нормально, когда прокси-сервер не используется, однако при использовании прокси-сервера приложение выходит из строя, а вместо ответа XML он ожидает запроса SOAP, он получает страницу с ошибкой HTML, в которой указано «Требуется аутентификация».Как я могу заставить WebClient (клиент webservice) автоматически использовать прокси-сервер по умолчанию?
Кажется, вы можете установить прокси-сервер вручную, как это:
WebClient client = new WebClient();
WebProxy wp = new WebProxy("proxy server url here");
client.Proxy = wp;
... но в какой-то степени, это, кажется, видит прокси-сервер в любом случае без делать выше, так как генерируется ошибка на самом деле происходит с прокси-сервера. Похоже, что он не собирает учетные данные для входа в систему Windows Authentication с компьютера пользователя. Как я могу заставить это сделать это?
На моей собственной машине, если я смоделирую это с помощью Fiddler (и включив опцию «Требовать аутентификацию прокси»), я получаю диалоговое окно с запросом учетных данных для входа, но это, похоже, не происходит на машинах моего клиента (которые используют настоящий аппаратный прокси - McAfee Web Gateway).
Как я могу справиться с этим? Должен ли я предоставлять диалог для пользователей для настройки сервера вручную или есть параметр, чтобы сообщить WebClient использовать прокси-сервер Windows по умолчанию и собственные учетные данные пользователя?
Update
Похоже, вы можете забрать прокси-сервер, используя следующий код, но это не вызывает диалоговое окно аутентификации появляться во всех ситуациях (работает на некоторых компьютерах, но не на других):
IWebProxy defaultProxy = WebRequest.DefaultWebProxy;
if (defaultProxy != null)
{
defaultProxy.Credentials = CredentialCache.DefaultCredentials;
client.Proxy = defaultProxy;
}
Если код указан правильно, я не понимаю, почему некоторые пользователи не будут запрашивать их учетные данные. Должен ли я вводить свой собственный код для сбора учетных данных пользователя и отправки их на объект WebRequest?
Вы смотрели на [WindowsIdentity.Impersonate Method] (http://msdn.microsoft.com/en-us/library/w070t6ka%28v=vs.100%29.aspx) ? –
Не уверен, что это актуально, поскольку мое приложение уже работает как локальный пользователь, я думаю? – NickG
Doh, мой плохой ... В последнее время я слишком много разбираюсь с SQL CLRSprocs ... «Когда все вы [используете] - это молот ...» –