当前位置:编程学习 > C#/ASP.NET >>

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,至少不卡界面 --------------------编程问答--------------------
引用 1 楼 bdmh 的回复:
试试异步下载DownloadStringAsync,至少不卡界面

没有卡界面的,但记录日志的时候发现确实是WebClient卡住了
机率很小,但客户有几十万数据,再小的概率也能撞上了
那个异步方法搜到过,但有人说一旦卡住了异常方法也没法结束
改动代价大,测试代价也大,所以想问问有没有更好的解决方案 --------------------编程问答-------------------- http://blog.sina.com.cn/s/blog_6fe1bc2e0101emc5.html
貌似能解决,测试中
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,