2

我有一个在 .NET 4.0 上用 c# 编写的应用程序,它需要发出多个 Web 服务请求。Web 服务请求在性质上有所不同,但主要是请求信息。

所涉及的类型是System.ServiceModel.ClientBase

连接是在代码中设置的,并使用诸如BasicHttpBindingEndpointAddress、 等类型CustomBinding

如何确定可以在 的导数上发出的最大并发请求数ClientBase

我无法找到任何与 MaxConnections 相关的属性,但我确实遇到了NetTcpBinding.MaxConnectionsConnectionManagementElement.MaxConnection之类的东西,但这些似乎都与我利用的 API 不兼容。要么我错过了如何使用它们,要么不可用,要么我不知道去哪里找。

4

2 回答 2

2

WCF 是对核心网络概念的抽象。对于 HTTP 绑定,它属于 ServicePoint 配置,它决定了诸如 HTTP 并发连接限制之类的东西。

你想要ServicePointManager.DefaultConnectionLimit的 HTTP:

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

您也可以通过配置文件执行此操作:

http://msdn.microsoft.com/en-us/library/fb6y0fyc.aspx

于 2014-01-23T20:05:34.247 回答
-2

这将在服务主机的 .config 文件的绑定配置部分中。根据所使用的绑定,您可以设置诸如 maxConcurrentCalls 和 maxConcurrentSessions 之类的内容,WCF 通常对它们施加默认限制。

现实生活中的例子:

<system.serviceModel>
        <behaviors>
            <serviceBehaviors>
                <behavior name="ServiceBehaviorBasicHttp">
          <serviceThrottling maxConcurrentCalls="1000" maxConcurrentSessions="1000" maxConcurrentInstances="1000"/>
                    <serviceMetadata />
                </behavior>
</system.serviceModel>

或者在后面的代码中,是这样的:

ServiceHost host = new ServiceHost(typeof(MyService));
ServiceThrottlingBehavior throttleBehavior = new ServiceThrottlingBehavior
{
    MaxConcurrentCalls = 40,
    MaxConcurrentInstances = 20,
    MaxConcurrentSessions = 20,
};
host.Description.Behaviors.Add(throttleBehavior);
host.Open();

取自这里:WCF:如何将 ServiceThrottlingBehavior 添加到 WCF 服务?

于 2014-01-23T19:48:52.640 回答