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