.net中突破每客户端两个http连接的限制

最近写个spider,一开始使用webclient来取html页,发现即使开再多的线程也只有两个并发连接,找了好长时间资料也没找到相关的资料(没想到仔细找找msdn,丢人哪)。没奈何,只好自己来实现一个http,大部分时间花在调试http通信上,耗了差不多一个星期,效果也就是仅仅能用而已。

结果有一天灵光一闪,用“webclient 并发”(竟然一直没想到,猪啊)google了一下, 找到一位高人的文章 ,一下子解决了大问题。

两个办法:

1。限制针对应用程序域,为每个线程使用不同的应用程序域:

AppDomain appDomain = AppDomain.CreateDomain("");
appDomain.ExecuteAssembly(@"TestClient.exe");
AppDomain.Unload(appDomain);

2。配置文件:

1<system.net>
2<connectionmanagement>
3<add address="*" maxconnection="100"></add>
4</connectionmanagement>
5</system.net>

当时气不打一处来,这么简单的东西,ms怎么不给列出来呢?!搜一下msdn,不好意思,里面明明就有,错怪了ms了。

接下来的问题是,通常情况下url里传递汉字都是会用urlencode一下变成utf-8字符串来传,可就有个别网站直接把汉字写上去。webclient呢,又自作聪明的把querystring都utf-8一下再发出去,于是就...404。还没找到办法解决,实在不行就用自己写那一段http通信代码来取了。

keep thinking, searching, googling....

Published At
Categories with Web编程
Tagged with
comments powered by Disqus