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

时间:2010-11-12 07:10:24

标签: c# stream webclient

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.InternalEndGetResponse(IAsyncResult的   asyncResult)at   System.Net.BrowserHttpWebRequest<> C_ DisplayClass5.b _4(对象   sendState)at   System.Net.AsyncHelper。<> c_ DisplayClass2.b _0(Object sendState)---内部结束   异常堆栈跟踪--- at   System.Net.AsyncHelper.BeginOnUI(SendOrPostCallback   beginMethod,Object state)at   System.Net.BrowserHttpWebRequest.EndGetResponse(IAsyncResult的   asyncResult)at   System.Net.WebClient.GetWebResponse(WebRequest的   请求,IAsyncResult结果)at   System.Net.WebClient.OpenReadAsyncCallback(IAsyncResult的   结果)---内部异常结束   堆栈跟踪---

网址是一个简单的字符串,其数量不超过200个。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

我将冒险猜测它是超时的。我还要进一步猜测它可能是DNS问题。

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

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

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

答案 2 :(得分:0)

可能网址很长。我在WP8上遇到了2900个符号长度URL的相同问题