WebClient wc = new WebClient();
wc.OpenReadCompleted += new OpenReadCompletedEventHandler(wc_OpenReadCompleted);
wc.OpenReadAsync(new Uri(url, UriKind.RelativeOrAbsolute));
void wc_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
if (e.Error != null || e.Cancelled)
{
//randomly, this code gets hit and
//there is no inner exception - just says "an exception occurred during a webclient request"
Ошибка, описанная в коде, происходит случайным образом и если после этого выполняется тот же запрос веб-клиента. Или, если новый запрос ресурса сделан, старый, который получил ошибку, теперь приходит перед новым запросом ...Ошибка webclient (случайная и очень очень раздражающая)
Это очень странно, любые гуру здесь могут понять, почему это может быть?
EDIT: информация об ошибке
System.Net.WebException: исключение произошло во время запроса WebClient. ---> System.Exception ---> System.Exception: Ошибка HRESULT E_FAIL был возвращен из вызова компонента COM . на System.Net.BrowserHttpWebRequest.InternalEndGetResponse (IAsyncResult asyncResult) в System.Net.BrowserHttpWebRequest. <> c_ DisplayClass5.b _4 (Объект sendState) по адресу System.Net.AsyncHelper. <> c_ DisplayClass2.b _0 (Object sendState) --- Конец внутренней трассировки стека исключений --- у System.Net.AsyncHelper.BeginOnUI (SendOrPostCallback beginMethod, объект состояния) на System.Net.BrowserHttpWebRequest .EndGetResponse (IAsyncResult AsyncResult) при System.Net.WebClient.GetWebResponse (WebRequest запрос, IAsyncResult результат) на System.Net.WebClient.OpenReadAsyncCallback (IAsyncResult результат) --- Конец внутреннее исключение трассировки стека - -
URL-адрес простой строки, имеющей счетчик не более 200.
Какой тип исключения? Вы пробовали смотреть на то, что происходит на сетевом уровне, используя Wireshark? –
@Jon Skeet: exception = "исключение произошло во время запроса webclient", и это все, что я верну. Я не использовал Wireshark, но сразу установил его. Однако, используя скрипт, я даже не вижу HTTP-запрос, когда я получаю эту ошибку; Однако, когда я делаю еще один запрос WebClient - тот, в котором я получил ошибку, появляется в скрипаче (тип запроса = GET, HTTP/1.1), и новый запрос, который я сделал, также возникает после этого ....так что это очень странно. – VoodooChild
(только для добавления в мой комментарий): после получения ошибки и отсутствия сеанса скрипача для нее - если я сделаю еще один звонок и теперь вижу два запроса, сделанных в скрипаче, и если я посмотрю подробности для запроса, когда я получил ошибку, я вижу, что отметка 'ClientBeginRequest' находится в более новое время, когда я сделал второй запрос. Таким образом, это почти похоже на то, что запрос webClient застрял где-то в памяти или буфере, а по следующему запросу он заставляет его выполнять. Кроме того, я установил WireShark, но с тех пор я не смог воссоздать эту ошибку :) - но я обновлю это, как только я это сделаю. – VoodooChild