Какая разница между WebRequest.DefaultWebProxy и WebRequest.GetSystemWebProxy()? - программирование
Подтвердить что ты не робот

Какая разница между WebRequest.DefaultWebProxy и WebRequest.GetSystemWebProxy()?

Мне интересно, какие основные отличия между DefaultWebProxy и GetSystemWebProxy(). В MSDN есть несколько описаний, но я все еще чувствую, что мне нужно немного больше деталей, чтобы лучше понять.

Кроме того, скажем, у меня есть следующие параметры настройки прокси-сервера в моем приложении winform для С#

  • Автоматическое определение настроек прокси-сервера
  • Использовать системные настройки по умолчанию
  • Без прокси

Затем какой метод переходит к какой опции? Правильно ли сказать, что Auto-detect proxy несколько равно Use system default настройкам?

4b9b3361

Ответ 1

В статье MSDN для WebRequest.DefaultWebProxy, это свойство предоставит информацию прокси, указанную в файле app.config. Это выглядит как . В статье NET Framework v3.5 в статье MSDN отсутствует эта конкретная деталь.

Что касается WebRequest.GetSystemWebProxy(), статья статьи MSDN для него утверждает, что этот метод предоставит общесистемный настроенный прокси (панель управления > Свойства обозревателя).


Вот как я предлагаю вам реализовать три варианта:

  • Автоматическое определение настроек прокси-сервера
    • Реализовать свою собственную логику обнаружения прокси; или
    • Измените системные настройки в соответствии с настройками вашего приложения и используйте WebRequest.GetSystemWebProxy() (я бы не рекомендовал этот подход); или
    • Предпочтительно не включать эту опцию и позволить пользователю использовать соответствующую общесистемную настройку вместе с параметром "Использовать системные настройки по умолчанию";
  • Использовать системные настройки по умолчанию
    • Используйте WebRequest.GetSystemWebProxy();
  • Без прокси
    • Обеспечьте отмену свойств WebRequest.DefaultWebProxy и WebRequest.Proxy;

Изменить: Если прокси-сервер не настроен в app.config WebRequest.DefaultWebRequest, на самом деле то же самое, что и WebRequest.GetSystemWebProxy() (по крайней мере, для .NET 4.5).
Спасибо Габриелию за comment.