Проверка работы Proxy для конкретного ресурса - C#
Формулировка задачи:
Добрый день, сам учусь на первом курсе, изучаем C#.
Периодически делаю разнообразные программы чтобы набраться опыта.
Работаю в Visual Studio 2013.
И так, отказывается нормально работать 1 из алгоритмов программы.
Сам этот "стрипт" проверки Proxy являетя часть от более большой программы, которая обращается к ресурсу для которого мы и проверяем Proxy.
После запуски главного скрипта запускается
Который запускает функцию Start -> Которая запускает ещё 1 функцию, например Example -> Эта в свою очередь и вызывает нашу GetProxy.
Идея работы и сама проблема: Скрипт берет текущую прокси из массива прокси по счетчику, проверяет ее на работоспособность для конкретного ресурса и если прокси годная возвращает ее, если нет идет далее по списку.
Функция "проверки работоспособности" просто делает GET запрос к ресурсу с помощью переданной ей прокси, и если исключение не вызвано то прокси считается годной.
В прокси листе допустим 1000 прокси.
Проблема заключается в том что по идее если все 999 прокси плохие а 1000'ная хорошая, то скрипт должен пройти все от 1 до 1000, Но он проходит ровно 10 штук (заколдованное число) и останавливается БЕЗ ОШИБОК И ИСКЛЮЧЕНИЙ, ПРИ ЗАПУСКЕ В РЕЖИМЕ ОТЛАДКИ ТОЖЕ ОСТАНАВЛИВАЕТСЯ БЕЗ СООБЩЕНИЙ.
Cкрин из программы снифающей запросы я прикрепил к сообщению, из него видны эти 10 запросов, после которого все останавливается.
//string[] Proxy - Массив прокси вида 127.0.0.1:80
//int ProxyI - счетчик использованых/проверенных
public string[] GetProxy()
{
bool send = false;
string[] ProxyData = {};
while (!send)
{
Thread.Sleep(1500);
ProxyData = Proxy[ProxyI].Split(new char[] { ':' });
send = CheckProxy(ProxyData[0], int.Parse(ProxyData[1]));
ProxyI++;
}
return ProxyData;
}
public static bool CheckProxy(string host, int port)
{
bool result = false;
WebRequest webRequest = WebRequest.Create("https://example.com/");
webRequest.Proxy = new WebProxy(host, port);
try
{
using (Stream responseStream = webRequest.GetResponse().GetResponseStream())
{
using (var sr = new StreamReader(responseStream))
{
result = true;
}
}
}
catch (WebException wex)
{
result = false;
}
return result;
}factory.StartNew(() => Parallel.ForEach(Data, options, Start));
Решение задачи: «Проверка работы Proxy для конкретного ресурса»
textual
Листинг программы
foreach(var e in exc.InnerExceptoins)
{
Debug.WriteLine(e.Message);} // е.Message на e.ToString()
}