Использование C # WebClient с прокси-сервером - никаких запросов к прокси-серверу?
-
27-10-2019 - |
Вопрос
У нас есть фоновая операция (оконная служба), которую мы хотим использовать через прокси-сервер.
В основном мы делаем это:
родовое словоПрокси-сервер - это тот, который мы настроили сами с помощью FreeProxy .
Я включил ведение журнала и на машине, на которой я тестирую, и могу подтвердить, что запросы к прокси-серверу выполняются при его использовании в Firefox.
Для прокси-сервера аутентификация не требуется, за исключением того, что IP-адрес должен находиться в нашем офисе (что, как я полагаю, не является проблемой).
Однако в нашем фоновом процессе я, похоже, не использую прокси, когда использую веб-клиент:
родовое словоЯ не получаю ошибок от прокси, однако кажется, что мы просто обойдемся без него, даже если прокси был установлен явно.
Похоже, информация возвращается нормально, но не через наш прокси.
Что-то мне не хватает при использовании прокси с генеральным кодом кода?
редактировать: подробнее. Если мы отключим прокси-сервис на сервере, то получим исключение, которое не можем подключиться. Похоже, что веб-клиент пытается связаться с прокси-сервером, но этот трафик на самом деле не проходит через прокси.
родовое словоРешение
Оказывается, FreeProxy не принимает трафик HTTPS.
Я предполагаю, что прокси-сервер должен возвращать типы трафика, который он может маршрутизировать, а если нет, веб-клиент ничего не делает.
Перешел на использование пакета Burp в качестве нашего прокси, поскольку он может принимать HTTPS.
Другие советы
Вам необходимо либо настроить окна для использования прокси-сервера по умолчанию, либо установить прокси вручную в коде, см. http://msdn.microsoft.com/en-us/library/system.net.webclient.proxy (v= VS.100) .aspx
Насколько я могу судить, вы правильно используете класс WebClient.Я вижу следующий запрос ...
родовое словов Fiddler, запущенном на моем локальном компьютере.Теперь, если я выключу Fiddler, я получу WebException:
родовое словоС внутренним SocketException:
родовое словоИтак, с учетом сказанного, я предполагаю, что ваш прокси работает так, как задумано, но он просто не регистрирует исходящий HTTP-запрос.