ServicePoint: 提供HTTP連接的連接管理ServicePointManager: 管理ServicePoint 對象的集合 註意事項:1. 將http的request的keepAlive設置為false //如果不是必須的要keepalive的,那麼就要設置KeepAlive為fals ...
ServicePoint: 提供HTTP連接的連接管理
ServicePointManager: 管理ServicePoint 對象的集合
註意事項:
1. 將http的request的keepAlive設置為false //如果不是必須的要keepalive的,那麼就要設置KeepAlive為false, 預設是True
2. 修改System.Net.ServicePointManager.DefaultConnectionLimit = 50; //這個值預設是
3. 根據自己的情況修改
釋放資源(比如HttpWebReques對象和HttpWebResponse對象)
if (resp != null)
{
resp.Close();
}
if (req != null)
{
req.Abort();
}
4. 創建HttpWebRequest對象之前,強制回收垃圾:
System.GC.Collect()
5. 在Http協議中,規定了同個Http請求的併發連接數最大為2. 這個數值,可謂是太小了。
而目前的瀏覽器,已基本不再遵循這個限制,但是Dot Net平臺上的 System.Net 還是預設遵循了這個標準的。
從而造成了,在使用HttpWebRequset 或者 WebClient 利用多線程的方式,訪問某個網站時,經常出現 連接被異常關閉 的錯誤,大大降低了效率。
這個限制的值,是可以自己設置或配置的。
System.Net.ServicePointManager.DefaultConnectionLimit 就是設置的地方。 可以根據實際情況,來設置這個值的大小,不過,建議不要超過1024,推薦為512,已經足夠了。
當然,也可以直接在程式的 app.config中配置這個值。
此值設置後,只對以後發起的HTTP請求有效。
6. 過多的連接,會導致Request和Response的銷毀不執行,可以再最開始的時候設置強制回收垃圾:
System.GC.Collect