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