WebClient卡死
使用WebClient进行模拟浏览器,但总是出现直接卡死的问题,超时设置了我扩展了基本的WebClient,下面是 关键代码
protected override WebRequest GetWebRequest(Uri address)
{
InitHeader();
Request = (HttpWebRequest)base.GetWebRequest(address);
Request.MaximumAutomaticRedirections = 1000;
if (Timeout <= 0)
Timeout = 60;
Request.Timeout = Timeout * 1000;
Request.ReadWriteTimeout = Timeout * 1000;
Request.AllowAutoRedirect = AllowAutoRedirect;
Request.CookieContainer = this._cookieContainer;
Request.KeepAlive = true;
Request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
if (address.ToString().StartsWith("https"))
{
Credentials = CredentialCache.DefaultNetworkCredentials;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
ServicePointManager.ServerCertificateValidationCallback = callback;
}
return Request;
}
protected override WebResponse GetWebResponse(WebRequest request)
{
Response = (HttpWebResponse)base.GetWebResponse(request);
if (Response != null)
{
this._cookieContainer.Add(Response.Cookies);
}
return Response;
}
就这样最普通的使用
new WebClientEx().DownloadString("xxxxx")
有时候都会卡死,就是直接卡那儿不动了
把上面放线程里面,直接结束线程也不行
求教大神怎样才能避免卡死? --------------------编程问答-------------------- 试试异步下载DownloadStringAsync,至少不卡界面 --------------------编程问答--------------------
没有卡界面的,但记录日志的时候发现确实是WebClient卡住了
机率很小,但客户有几十万数据,再小的概率也能撞上了
那个异步方法搜到过,但有人说一旦卡住了异常方法也没法结束
改动代价大,测试代价也大,所以想问问有没有更好的解决方案 --------------------编程问答-------------------- http://blog.sina.com.cn/s/blog_6fe1bc2e0101emc5.html
貌似能解决,测试中
补充:.NET技术 , C#