代码之家  ›  专栏  ›  技术社区  ›  VoodooChild

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

  •  2
  • VoodooChild  · 技术社区  · 14 年前
    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请求期间发生。 --->系统。异常---系统。异常:错误hresult e_fail 已从对COM的调用中返回 组件。在 System.NET.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult 异步结果) system.net.browserhttpwebrequest.<gt;c_ 显示类5B 第四类(对象) 发送状态) System.NET.AsyncHelper.<gt;c_ 显示类2B _ 0(对象发送状态)---内部结束 异常堆栈跟踪---位于 System.NET.AsyncHelper.BeginonUI(sendorPostCallback BeginMethod,对象状态) system.net.browserhttpwebrequest.endgetresponse(iasyncresult 异步结果) System.NET.WebClient.GetWebResponse(WebRequest 请求,IAsyncResult结果),位于 System.NET.WebClient.OpenReadAsyncCallback(IAsyncResult 结果)---内部异常结束 堆栈跟踪

    URL是一个计数不超过200的简单字符串。

    3 回复  |  直到 10 年前
        1
  •  2
  •   Robert MacLean    14 年前

    如果取消或生成错误,该代码将被命中。我怀疑你有网络问题,所以我会发火的 Fiddler 并观察HTTP请求,确保正确地将其返回。

        2
  •  0
  •   Mike Caron    14 年前

    我要冒险猜测它的时机到了。我还将进一步猜测这可能是一个DNS问题。

    可能是DNS超时了。这与您没有在fiddler中看到请求是一致的。

    我想当您稍后再试时,不可能再填写请求,这一次DNS可以工作。也许吧。这一点我有点模糊,但无论如何。

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

        3
  •  0
  •   Grigory    10 年前

    可能URL很长。我在WP8上也有同样的问题,有2900个符号长度的URL