2016-04-22 11 views
1

Zu Diagnosezwecken protokolliere ich ServicePointManager.DefaultConnectionLimit. Es scheint jedoch merkwürdigerweise Int32.MaxValue (d. H. 2147483647) zurückzugeben.ServicePointManager.DefaultConnectionLimit gibt Int32.MaxValue zurück

Dies scheint die MSDN documentation zu dem Thema zu widersprechen:

Die maximale Anzahl gleichzeitiger durch ein Servicepoint Objekt erlaubt Verbindungen. Der Standardwert ist 2.

Für Kontext, ich diesen Wert in einer ASP.Net 4-Anwendung bin immer auf 4.6.1 läuft

+1

Hier ist ein Kommentar in asp.net 4,5 bis 'Int32.MaxValue' für Web-Projekten erhöht wird: [System.Net.ServicePointManager.DefaultConnectionLimit == 24 -> BUG?] (Http: // stackoverflow.com/a/5649013/33499). – wimh

Antwort

2

Basierend auf @ Wimmel den Link in ASP.Net scheint, dass es Stellen Sie Int32.MaxValue als Teil der Http-Laufzeit ein.

Wir können dies sehen, indem Sie innerhalb der System.Web Montage in der HttpRuntime Klasse.

Es gibt eine Methode namens SetAutoConfigLimits, die es auf Int32.MaxValue setzt. Hier ist der dekompilierte Code.

private void SetAutoConfigLimits(ProcessModelSection pmConfig) 
{ 
    int workerThreads; 
    int completionPortThreads; 
    ThreadPool.GetMaxThreads(out workerThreads, out completionPortThreads); 
    if (pmConfig.DefaultMaxWorkerThreadsForAutoConfig != workerThreads || pmConfig.DefaultMaxIoThreadsForAutoConfig != completionPortThreads) 
    UnsafeNativeMethods.SetClrThreadPoolLimits(pmConfig.DefaultMaxWorkerThreadsForAutoConfig, pmConfig.DefaultMaxIoThreadsForAutoConfig, true); 
    ServicePointManager.DefaultConnectionLimit = int.MaxValue; 
} 
Verwandte Themen