System.Net.ServicePointManager.DefaultConnectionLimit == 24 - > BUG?

Joh*_*ika 10 .net asp.net .net-4.0

在我的调试器中检查.Net 4中的System.Net.ServicePointManager.DefaultConnectionLimit时,我看到非常高的数字.我在一台机器上看到24,在另一台机器上看到48.

对于新创建的ASP.NET MVC 3项目,即使没有对其进行任何配置更改,情况也是如此.这是一个错误吗?文档明确指出默认值为2:

ServicePoint对象允许的最大并发连接数.默认值为2.

来自http://msdn.microsoft.com/en-us/library/system.net.servicepointmanager.defaultconnectionlimit(v=VS.100).aspx

DefaultNonPersistentConnectionLimit和DefaultPersistentConnectionLimit字段分别是更真实的4和2,但DefaultConnectionLimit数字似乎超出范围.

Jak*_*urc 12

这不是一个错误.它可能是每CPU 12个.

该值来自<connectionManagement>Web.config或Machine.config.如果两个文件都不包含元素,则可能通过autoConfig=True设置<processModel>元素来配置它.

  • 对于Web项目,它设置为Int32.MaxValue.但是在Azure WorkerRole中(我没有检查过,但我怀疑还有一个控制台或桌面应用程序),默认设置为2.可能是因为没有调用HttpRuntime. (6认同)
  • 如果你要反编译v4.0 System.Web并查看'SetAutoConfigLimits'方法,你会看到这个设置为2*#的CPU.在.NET 4.5中,这似乎已更改,现在值设置为Int32.MaxValue(0x7fffffff). (5认同)
  • Kevin是完全正确的,使用框架4.5确实是Int32.MaxValue.它在System.Web.HttpRuntime类中. (3认同)