基于.net中突破每客戶端兩個(gè)http連接限制的詳細(xì)介紹
更新時(shí)間:2013年05月20日 10:29:11 作者:
本篇文章是對.net中突破每客戶端兩個(gè)http連接限制進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
在Http協(xié)議中,規(guī)定了同個(gè)Http請求的并發(fā)連接數(shù)最大為2. 這個(gè)數(shù)值,可謂是太小了。
而目前的瀏覽器,已基本不再遵循這個(gè)限制,但是Dot Net平臺上的 System.Net 還是默認(rèn)遵循了這個(gè)標(biāo)準(zhǔn)的。
從而造成了,在使用HttpWebRequset 或者 WebClient 利用多線程的方式,訪問某個(gè)網(wǎng)站時(shí),經(jīng)常出現(xiàn) 連接被異常關(guān)閉的錯(cuò)誤,大大降低了效率。
這個(gè)限制的值,是可以自己設(shè)置或配置的。
System.Net.ServicePointManager.DefaultConnectionLimit 就是設(shè)置的地方。 可以根據(jù)實(shí)際情況,來設(shè)置這個(gè)值的大小,不過,建議不要超過1024,推薦為512,已經(jīng)足夠了。
當(dāng)然,也可以直接在程序的 app.config中配置這個(gè)值。
此值設(shè)置后,只對以后發(fā)起的HTTP請求有效。
兩個(gè)辦法:
1。限制針對應(yīng)用程序域,為每個(gè)線程使用不同的應(yīng)用程序域:
AppDomain appDomain = AppDomain.CreateDomain("");
appDomain.ExecuteAssembly(@"TestClient.exe");
AppDomain.Unload(appDomain);
2。在app.config配置文件中添加:
<system.net>
<connectionManagement>
<add address="*" maxconnection="100"/>
</connectionManagement>
</system.net>
而目前的瀏覽器,已基本不再遵循這個(gè)限制,但是Dot Net平臺上的 System.Net 還是默認(rèn)遵循了這個(gè)標(biāo)準(zhǔn)的。
從而造成了,在使用HttpWebRequset 或者 WebClient 利用多線程的方式,訪問某個(gè)網(wǎng)站時(shí),經(jīng)常出現(xiàn) 連接被異常關(guān)閉的錯(cuò)誤,大大降低了效率。
這個(gè)限制的值,是可以自己設(shè)置或配置的。
System.Net.ServicePointManager.DefaultConnectionLimit 就是設(shè)置的地方。 可以根據(jù)實(shí)際情況,來設(shè)置這個(gè)值的大小,不過,建議不要超過1024,推薦為512,已經(jīng)足夠了。
當(dāng)然,也可以直接在程序的 app.config中配置這個(gè)值。
此值設(shè)置后,只對以后發(fā)起的HTTP請求有效。
兩個(gè)辦法:
1。限制針對應(yīng)用程序域,為每個(gè)線程使用不同的應(yīng)用程序域:
復(fù)制代碼 代碼如下:
AppDomain appDomain = AppDomain.CreateDomain("");
appDomain.ExecuteAssembly(@"TestClient.exe");
AppDomain.Unload(appDomain);
2。在app.config配置文件中添加:
復(fù)制代碼 代碼如下:
<system.net>
<connectionManagement>
<add address="*" maxconnection="100"/>
</connectionManagement>
</system.net>
相關(guān)文章
C#實(shí)現(xiàn)從多列的DataTable里取需要的幾列
這篇文章主要介紹了C#實(shí)現(xiàn)從多列的DataTable里取需要的幾列,涉及C#針對DataTable操作的相關(guān)技巧,需要的朋友可以參考下2016-03-03
如何用C#找出數(shù)組中只出現(xiàn)了一次的數(shù)字
數(shù)組從字面上理解就是存放一組數(shù),下面這篇文章主要給大家介紹了關(guān)于如何用C#找出數(shù)組中只出現(xiàn)了一次的數(shù)字,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12
C# 總結(jié)QueueUserWorkItem傳參幾種方式案例詳解
這篇文章主要介紹了C# 總結(jié)QueueUserWorkItem傳參幾種方式案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-09-09
VS2017使用Git進(jìn)行源代碼管理的實(shí)現(xiàn)
這篇文章主要介紹了VS2017使用Git進(jìn)行源代碼管理的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07

