这些"良好的"RFC要求每个RFC客户端注意每台主机不能使用2个以上的连接……

微软在WebClient中实现了这一点.我知道它可以用

应用程序.配置:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
 <system.net> 
  <connectionManagement> 
   <add address="*" maxconnection="100" /> 
  </connectionManagement> 
 </system.net> 
</configuration> 

(发现日期:http://social.msdn.microsoft.com/forums/en-US/netfxnetcom/thread/1f863f20-09f9-49a5-8eee-17a89b591007)

但我如何通过编程实现呢?

根据 http://msdn.microsoft.com/en-us/library/system.net.servicepointmanager.defaultconnectionlimit.aspx

"更改DefaultConnectionLimit属性对现有的 ServicePoint对象;它只影响符合以下条件的ServicePoint对象 在更改后初始化.如果此属性的值尚未 直接设置或通过配置设置,则该值默认为 常量DefaultPersistentConnectionLimit."

我最好是在实例化WebClient时配置该限制,但只要在我的程序开始时就以编程方式删除这个可悲的限制也是可以的.

我访问的服务器不是internet上的常规Web服务器,而是在我的控制下和本地lan中.我想进行API调用,但我不使用webservices或远程处理

推荐答案

根据这里和其他地方的一些提示,我通过覆盖我使用的WebClient类,在应用程序中解决了这个问题:

class AwesomeWebClient : WebClient {
    protected override WebRequest GetWebRequest(Uri address) {
        HttpWebRequest req = (HttpWebRequest)base.GetWebRequest(address);
        req.ServicePoint.ConnectionLimit = 10;
        return (WebRequest)req;
    }
}

.net相关问答推荐

.NET发布的应用程序运行与开发不同的端口

从没有流的EventStore中读取流不存在异常

使用CLR将数据从Excel导入SQL Server时出错

在 .NET 7 项目上设置 Sentry 时遇到问题

ECS服务无法从Cognito获取配置

正则表达式匹配 URL 中的多个子目录

如何在 C# 中自动删除临时文件?

"投掷;" 是什么意思?靠自己做什么?

在c#中计算中位数

为什么 C# 不允许像 C++ 这样的非成员函数

将 int 转换为 .NET 中的位数组

如何从 appsettings.json 中获取价值

无法加载文件或程序集WebGrease,版本=1.5.1.25624,Culture=neutral,PublicKeyToken=31bf3856ad364e35或其依赖项之一

获取当前方法的名称

C# (.NET) 设计缺陷

使用没有catch块的try-finally块

使用 C# vs F# 或 F# vs C# 有什么好处?

如何判断枚举是否包含数字?

NServiceBus 与 MassTransit

如何使用 XmlSerializer 将字符串序列化为 CDATA?