今天把我以前做的一个程序升级到了.NET 4.0的版本,里面有一段通过HttpWebRequest获取html的代码,第一次运行特别慢,后续运行就快了。在网上搜了一下,在http://blog.csdn.net/rrrfff/article/details/6170653中找到了原因:.NET4.0中的默认代理是开启的,使用默认代理时,只有等待超时后才会绕过代理,从而导致第一次连接特别慢。(不知道微软为什么要把这个打开)
该文章中也提到了解决方案,一般有两种:
1. 在配置文件中(.config)中添加相应配置,关闭默认代理:
1 <?xml version="1.0"?>
2 <configuration>
3 <startup>
4 <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
5 </startup>
6 <system.net>
7 <defaultProxy enabled="false" useDefaultCredentials="false" >
8 <proxy/>
9 <bypasslist/>
10 <module/>
11 </defaultProxy>
12 </system.net>
13 </configuration>
2 <configuration>
3 <startup>
4 <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
5 </startup>
6 <system.net>
7 <defaultProxy enabled="false" useDefaultCredentials="false" >
8 <proxy/>
9 <bypasslist/>
10 <module/>
11 </defaultProxy>
12 </system.net>
13 </configuration>
2. 通过编码的方式手动关闭Proxy。
1 var req = WebRequest.Create("http://www.google.com") ;
2 req.Proxy = null;
2 req.Proxy = null;