前面的几个问题:
-
在服务器端,配置是什么样子的?
-
服务器运行在什么操作系统下?(某些操作系统版本/版本有限制)
-
您如何在该服务器上托管WCF服务?(IIS与自托管)
您基本上可以使用
ServiceThrottling
行为,你可以定义
-
最大并发调用数
-
最大并发会话数(包括TCP/IP传输会话)
-
服务类实例的最大数目
要进行配置,请尝试以下操作:
<serviceBehaviors>
<behavior name="throttledService">
<serviceThrottling
maxConcurrentCalls="10"
maxConcurrentInstances="10"
maxConcurrentSessions="10"/>
</behavior>
当然,您的服务配置随后必须引用该行为配置。
不过,没有一个默认值是5:—(但在您的情况下,我会尝试将所有设置都调到25或其他值,看看这是否有任何区别,然后根据您的需要进行调整(并监视服务器的CPU和内存负载!).
马克
更新:
您当然也可以在代码中这样做-类似于这样(在服务器端,在服务器端,您可以实例化
ServiceHost
类,如果您自己主持的话):
using (ServiceHost host = new ServiceHost(typeof(MyWCFService)))
{
ServiceThrottlingBehavior stb = new ServiceThrottlingBehavior();
stb.MaxConcurrentCalls = 25;
stb.MaxConcurrentInstances = 25;
stb.MaxConcurrentSessions = 25;
host.Description.Behaviors.Add(stb);
host.Open();
...
}