У меня есть код, который загружает содержимое веб-страницы, которую я использую некоторое время. Этот код работает нормально и никогда не вызывал проблем и до сих пор не... Однако есть довольно большая страница (2 МБ, без изображений) с 4 таблицами с 4, 20, 100, 600 строк соответственно и около 20 колонны широкие.
При попытке получить все данные он завершается без каких-либо явных ошибок или исключений, но возвращает только примерно до строки 60 в 4-й таблице - иногда больше, иногда меньше. Браузер завершает загрузку примерно за 20-30 секунд с постоянными, как бы сбросами, на страницу до завершения.
Я пробовал несколько решений от SO и искал без каких-либо результатов. Ниже приведен текущий код, но у меня есть: прокси, асинхронность, отсутствие тайм-аутов, ложное подтверждение активности...
Я не могу использовать WebClient (как еще одну надуманную попытку), потому что мне нужно войти в систему, используя файл cookie.
HttpWebRequest pageImport = (HttpWebRequest)WebRequest.Create(importUri);
pageImport.ReadWriteTimeout = Int32.MaxValue;
pageImport.Timeout = Int32.MaxValue;
pageImport.UserAgent = "User-Agent Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3";
pageImport.Accept = "Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
pageImport.KeepAlive = true;
pageImport.Timeout = Int32.MaxValue;
pageImport.ReadWriteTimeout = Int32.MaxValue;
pageImport.MaximumResponseHeadersLength = Int32.MaxValue;
if (null != LoginCookieContainer)
{
pageImport.CookieContainer = LoginCookieContainer;
}
Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
using (WebResponse response = pageImport.GetResponse())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream, encode))
{
stream.Flush();
HtmlRetrieved = reader.ReadToEnd();
}