妈的,最近搞一个.net程序,需要从网上下载东西,发现不管使用WebRequest, 还是WebClient,都出现严重的超时问题。
网上一搜,哈哈,看到了一篇.net菜鸟标识了【已解决】的文章:
【已解决】HttpWebRequest的GetResponse或GetRequestStream偶尔超时 + 总结各种超时死掉的可能和相应的解决办法
哥一看内容,明显就感觉不对,因为里面说的明明都是歪门邪道,竟然还有不少菜鸟回复说解决了问题。
经过哥仔细分析,终于得出结论,DNS问题。
.net的WebReques等内部类,在解析待遇名的url时,DNS设置不对。
哥做个实验:
同一个网站,绑定本地的两个域名:
::1 www.my.com
127.0.0.1 www.my.com
::1 www.my2.com
127.0.0.1 www.my2.com
在www.my.com的网站中,
WebClient c = new WebClient();
c.DownloadString("http://www.my.com/test.txt");
超时
但是
WebClient c = new WebClient();
c.DownloadString("http://www.my2.com/test.txt");
不超时。
这说明什么? 这说明WebRequest在请求和自己的域名相同的文件时,有BUG。
同志们,我用的可是最新的.net 4.5.1啊, 这都多少年了,微软这个问题还没发现没解决。
====================================================================
恳请各位在探讨技术的同时不要进行人身攻击。情节严重的将会进行一定惩处