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

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

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

两个办法:

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

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

2。配置文件:

<system.net>
 <connectionManagement>
  <add address="*" maxconnection="100"/>
 </connectionManagement>
</system.net>

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

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

keep thinking, searching, googling....

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值