.net2.0的winform客戶端最常用的與服務端通信方式是通過webservice,最近在用dottrace對客戶端做性能測試的時候發現,客戶端程序啟動以后,第一次調用某一個webservice的方法是,總是特別慢,大概需要0.8-1秒鍾的時間,而接下來掉其他方法就很快了,都只需要幾十毫秒。google了一把,找到解決辦法:
在應用程序的config文件中加入以下配置節:
<system.net> <defaultProxy enabled="false" useDefaultCredentials="false"> <proxy/> <bypasslist/> <module/> </defaultProxy> </system.net>
或者在程序入口加入以下代碼:
HttpWebRequest.DefaultWebProxy = null;
msdn上的解釋:
屬性
元素 | 說明 |
---|---|
enabled |
指定是否使用 Web 代理。默認值為 true。 |
useDefaultCredentials |
指定是否使用此主機的默認憑據訪問 Web 代理。默認值為 false。 |
子元素
元素 | 說明 |
---|---|
提供一組正則表達式來描述不使用代理的地址。 |
|
向應用程序添加新的代理模塊。 |
|
定義代理服務器。 |
父元素
元素 | 說明 |
---|---|
包含指定 .NET Framework 與網絡的連接方式的設置。 |
據我的理解,由於web代理默認是開啟的,也就是HttpWebRequest.DefaultWebProxy的值不為null,而這個DefaultWebProxy是一個全局變量。故第一次調用webservice方法的時候只有等這個默認代理超時以后才能繞過,所以第一次比較慢。