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个。
答案 0 :(得分:2)
如果取消或生成错误,将触发该代码。我怀疑你遇到了网络问题,所以我会启动Fiddler并观察HTTP请求并确保你正确地恢复它们。
答案 1 :(得分:0)
我将冒险猜测它是超时的。我还要进一步猜测它可能是DNS问题。
DNS可能会超时。这与你在Fiddler中没有看到请求是一致的。
我想,当你再次尝试时,这个请求将被填充并不是不可能的,这次DNS工作。也许。这一点我有点模糊,但无论如何。
如果您使用带有IP地址而不是域名的网址,您是否还有同样的问题?
答案 2 :(得分:0)
可能网址很长。我在WP8上遇到了2900个符号长度URL的相同问题