我正在多线程环境中调用网络服务。我的很多调用由于操作超时或错误请求而失败,但如果我以线性方式执行,则没有一个调用会失败,这意味着使用多个线程调用 Web 服务存在问题。经过大量分析,我发现并发连接的限制导致了这些异常,因此我通过添加以下代码来修复它。
ServicePointManager.DefaultConnectionLimit = 2 * _ThreadCount;
我不知道增加这个限制可能带来的缺点。默认情况下,连接限制为 2。如果有人知道任何缺点,请告诉我。
The MSDN https://msdn.microsoft.com/en-us/library/system.net.servicepointmanager.defaultconnectionlimit(v=vs.110).aspx says:
更改 DefaultConnectionLimit 属性没有效果在现有的
服务点对象;它只影响 ServicePoint 对象
更改后初始化。如果该房产的价值尚未
直接设置或通过配置设置,该值默认
为常量 DefaultPersistentConnectionLimit。
and
Note
对 DefaultConnectionLimit 属性的任何更改都会影响 HTTP
1.0 和 HTTP 1.1 连接。无法单独更改 HTTP 1.0 和 HTTP 1.1 协议的连接限制。当用于
服务器环境 (ASP.NET) DefaultConnectionLimit 默认为
更高的连接数,即 10。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)