У нас есть фоновая операция (служба Windows), которую мы хотим использовать через прокси-сервер.
По сути, мы делаем это:
public WebClient GetWebClient(){
var webClient = new WebClient();
webClient.proxy = new WebProxy(Configuration.ProxyHost, Configuration.ProxyPort);
// add a bunch of headers to the WebClient (sessionids, etc.)
return webClient;
}
Прокси-сервер - это тот, который мы настроили сами, используя FreeProxy .
Я включил ведение журнала и на машине, с которой я тестирую, и могу подтвердить, что запросы отправляются прокси при его использовании в Firefox.
Для прокси-сервера аутентификация не требуется, за исключением того, что IP-адрес должен находиться в нашем офисе (что, как я полагаю, из свидетельства Firefox, не является проблемой).
Однако в рамках нашего фонового процесса я, похоже, не использую прокси-сервер при использовании веб-клиента:
using(var wc = GetWebClient())
using(var s = wc.OpenRead("someurl"))
using(var sr = new StreamReader(s)){
return sr.ReadToEnd();
}
Я не получаю ошибок от прокси-сервера, однако, похоже, что мы просто обходимся без него, даже если прокси-сервер явно установлен.
Похоже, информация возвращается нормально, но не через наш прокси.
Что-то мне не хватает при использовании прокси с WebClient
?
редактировать: подробнее. Если мы отключим прокси-службу на сервере, то получим исключение, которое мы не сможем подключить. Похоже, что веб-клиент пытается связаться с прокси, но этот трафик фактически не проходит через прокси.
Inner Exception: SocketException: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond