ServicePointManager.DefaultConnectionLimit, возвращающий Int32.MaxValue
В целях диагностики я регистрирую ServicePointManager.DefaultConnectionLimit. Однако, как ни странно, кажется, что он возвращает Int32.MaxValue (то есть 2147483647).
Это противоречит документации MSDN по этому вопросу:
Максимальное количество одновременных подключений, разрешенное объектом ServicePoint. Значением по умолчанию является 2.
Для контекста, я получаю это значение в приложении ASP.Net 4, работающем на 4.6.1
1 ответ
Решение
Исходя из ссылки @Wimmel, в ASP.Net кажется, что она установлена на Int32.MaxValue
как часть времени выполнения HTTP.
Мы можем увидеть это, заглянув внутрь System.Web
собрание на HttpRuntime
класс
Есть метод, который называется SetAutoConfigLimits
который устанавливает его Int32.MaxValue
, Вот соответствующая выдержка:
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;
}