IWebProxy policy = WebRequest.GetSystemWebProxy();
request.Proxy = policy;

Сохраняйте возвращённый объект как IWebProxy. Этот фрагмент относится к существующему коду на основе WebRequest, а не является рекомендацией использовать этот устаревший API в новом приложении.

WebProxy реализует интерфейс, но не каждый объект, реализующий интерфейс, наследует от WebProxy. Поэтому системная обёртка может отклонить приведение ещё до любого сетевого запроса. Закрытое имя класса .NET Framework, например WebProxyWrapperOpaque, — это деталь реализации, а не проблема конечной точки прокси или учётной записи.

Для решения о маршруте вызывайте IsBypassed(destination) и GetProxy(destination) с фактическим URI назначения. Обход может вернуть само это назначение, а политика на основе PAC может выбрать другой маршрут для другого узла.

Для проверки подлинности IWebProxy уже предоставляет Credentials. Используйте поддерживаемую учётную запись и метод без приведения, чтобы добраться до свойства.

Извлечение одного URI для построения заменяющего WebProxy отбрасывает поведение исходной политики для каждого назначения. Делайте так только тогда, когда фиксированная конечная точка — это запланированная конфигурация приложения, а не обход ошибки типа.

Похожие статьи