Клиентское приложение .NET:как добраться до веб-служб в случае прокси?
Вопрос
Мы разрабатываем приложение winform .NET 2.0.Приложению необходим доступ Веб-сервисы.Тем не менее, мы сталкиваемся с проблемами с пользователями, использующими прокси.
Популярные приложения для резервного копирования Windows (подумайте Мозы) предоставляют умеренно сложное диалоговое окно, посвященное настройкам прокси.Тем не менее, повторная реализация еще одной логики обработки прокси и графического интерфейса кажется мне пустой тратой времени.
Как лучше всего бороться с прокси-сервером в клиентских приложениях .NET?
Более конкретно, у нас есть случай, когда пользователь записал свои настройки прокси-сервера в Internet Explorer (включая имя пользователя и пароль), поэтому поведение прокси по умолчанию .NET должен работать.Тем не менее, пользователю по-прежнему запрашивается имя пользователя и пароль при запуске IE (оба поля предварительно заполнены, пользователю просто нужно нажать «ОК»), а наше приложение winform по-прежнему не справляется с обработкой прокси.
Что нам следует сделать, чтобы у пользователя не запрашивалось имя пользователя и пароль при запуске IE?
Решение
Поместите это в файл конфигурации вашего приложения:
<configuration>
<system.net>
<defaultProxy>
<proxy autoDetect="true" />
</defaultProxy>
</system.net>
</configuration>
и ваше приложение будет использовать настройки прокси-сервера из IE.Если вы видите свой веб-сервис в IE с помощью прокси-сервера, вы сможете «увидеть» его из своего приложения.
Другие советы
Используйте классы WebProxy и WebRequest.Включите его в свою собственную библиотеку только один раз и используйте везде, где хотите работать с прокси.
Изучите использование .NET Веб-прокси сорт.Он поддерживает автоматический выбор правильных настроек по умолчанию.
Самый простой способ — использовать настройки прокси из IE Explorer.
Если вы откроете IE, нажмите «ОК» в диалоговом окне прокси-сервера, а затем (оставив IE открытым) попытаетесь подключиться к приложению winforms, будет ли ваше приложение работать?Или ваше приложение не может обрабатывать прокси, несмотря ни на что?
Все ли ваши клиенты, испытывающие проблемы с прокси-сервером, находятся в одной сети (т. е.они все используют один и тот же прокси-сервер)?
Я думаю, что спрашивающий понимает, что ему нужно использовать WebProxy, если пользователю требуется прокси-сервер, вопрос в том, «как мне получить настройки прокси-сервера IE, чтобы мне не приходилось просить пользователя ввести их в мое приложение?»
System.Net.WebProxy.GetDefaultProxy устарел, вам нужно использовать System.Net.WebRequest.DefaultWebProxy.Есть статья, описывающая это на сайте http://msdn.microsoft.com/en-ca/magazine/cc300743.aspx.