ошибка веб-клиента (случайная и очень очень раздражающая) - PullRequest
2 голосов
/ 12 ноября 2010
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"

Ошибка, описанная в коде, происходит случайным образом, и если после этого выполняется тот же запрос веб-клиента.Или, если сделан новый запрос ресурса, старый, получивший ошибку, теперь появляется раньше, чем новый запрос ......

Это очень странно, у любого гуру есть подсказка, почему это может быть?

РЕДАКТИРОВАТЬ: информация об ошибке

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.AsyncHel2. .>>.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.

Ответы [ 3 ]

2 голосов
/ 12 ноября 2010

Этот код будет сбит, если будет отменен или будет сгенерирована ошибка.Я подозреваю, что у вас возникла проблема с сетью, поэтому я бы запустил Fiddler и посмотрел HTTP-запросы и убедился, что вы их правильно возвращаете.

0 голосов
/ 08 июля 2014

Возможно, URL очень длинный.У меня та же проблема на WP8 с URL длиной 2900 символов

0 голосов
/ 24 ноября 2010

Я рискну предположить, что время истекло. Я также собираюсь предположить, что это может быть проблема DNS.

Возможно, время ожидания DNS истекло. Это согласуется с тем, что вы не видите запрос в Fiddler.

Полагаю, не исключено, что запрос будет выполнен позже при повторной попытке, и на этот раз DNS работает. Может быть. В этой точке я немного размыта, но что угодно.

Если вы используете URL-адрес с IP-адресом вместо имени домена, у вас все еще остается та же проблема?

...