首页 文章

webclient错误(随机且非常烦人)

提问于
浏览
2
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请求,则它可以正常工作 . 或者,如果发出新的资源请求,那么现在出现错误的旧请求将出现在新请求之前......

这很奇怪,这里的任何大师都知道为什么会这样?

编辑:有关错误的信息

System.Net.WebException:WebClient请求期间发生异常 . ---> System.Exception ---> System.Exception:错误HRESULT E_FAIL已从调用COM组件返回 . System.Net.BrowserHttpWebRequest上的System.Net.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult) . 在System.Net.AsyncHelper上的<> c_DisplayClass5.b_4(Object sendState) . <> c_DisplayClass2.b_0(Object sendState)---内部结束异步堆栈跟踪---在系统的System.Net.As.HerPetResponse(Web上的WebRequest请求,IAsyncResult结果)的System.Net.BrowserHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)上的System.Net.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod,Object state) .Net.WebClient.OpenReadAsyncCallback(IAsyncResult result)---内部异常堆栈跟踪结束---

URL是一个简单的字符串,其数量不超过200 .

3 回答

  • 0

    如果取消或生成错误,将触发该代码 . 我怀疑你正在遇到一个网络问题,所以我会启动Fiddler并观察HTTP请求,并确保你正确地恢复它们 .

  • 0

    我打算猜测它是超时的 . 我还要进一步猜测它可能是一个DNS问题 .

    DNS可能会超时 . 这与你在Fiddler中没有看到请求是一致的 .

    我想,当你再次尝试时,这个请求将被填充并不是不可能的,这次DNS工作 . 也许 . 这一点我有点模糊,但无论如何 .

    如果您使用带有IP地址而不是域名的URL,您是否还有同样的问题?

  • 2

    可能URL非常长 . 我在WP8上遇到了2900个符号长度的URL问题

相关问题