WebProxy.IsBypassed и Proxy.pac
В настоящее время я разрабатываю компонент.net для корпоративной среды. Нужно было поговорить со сторонней компанией, которая использует SSH для передачи файла. Этот же компонент также поддерживает FTP для связи с разными сторонами.
Все работает нормально, пока я не попытался положиться на метод WebProxy.IsBypassed, чтобы сказать мне, нужно ли целевому Uri получить прокси-сервер для аутентификации.
У меня есть настройки файла app.config:
<defaultProxy enabled="true" useDefaultCredentials="true">
<proxy scriptLocation="http://address/proxy.pac"/>
</defaultProxy>
Если Uri назначения был ftp://202.100.1.1:5500, метод IsBypassed правильно возвратил "False", что я и ожидал. Если я изменил тот же Uri на ssh://202.100.1.1:5500, метод IsBypassed вернул 'True'.
Я протестировал этот файл proxy.pac, и он работал правильно для сценариев ftp и ssh.
Мне было интересно, действительно ли.net использует этот pac-файл при определении истинного или ложного значения для метода IsBypassed?
Одна вещь, на которую я обратил внимание: если я введу адрес в файл app.config, то Visual Studio распознает как ссылку, например, ftp://202.100.1.1:5500, тогда метод IsBypassed всегда может вернуть ожидаемый результат. Если я набрал ssh://202.100.1.1:5500, Visual Studio не сможет распознать его как ссылку, тогда метод IsBypassed всегда возвращает ложное значение.
Переполнение стека также автоматически преобразует URI с FTP в ссылку, но оставляет SSH как обычный текст.
У кого-нибудь здесь есть идеи по этому поводу?