获取当前默认的maxConcurrentSessions设置

时间:2013-03-19 18:43:41

标签: c# wcf

任何人都知道如何通过代码获取基于会话的WCF服务上maxConcurrentSessions的当前设置?

即使没有在服务配置文件中设置maxConcurrentSessions,我也想得到这个值,换句话说,我希望在这种情况下得到默认值。

基本上我试图毫无疑问地证明,在我当前的环境中maxConcurrentSessions的默认值是什么。

谢谢!

2 个答案:

答案 0 :(得分:4)

诀窍是在配置文件中设置一些throttlingBehavior属性,但要保留maxConcurrentSessions:

 <serviceThrottling maxConcurrentCalls="100" maxConcurrentInstances="100"/>

然后在服务器上:

ServiceHost host = new ServiceHost(typeof(MyService));

string msg = "Service Behaviors:" + Environment.NewLine;
foreach (IServiceBehavior behavior in host.Description.Behaviors)
{
    msg += behavior.ToString() + Environment.NewLine;

    if (behavior is ServiceThrottlingBehavior)
    {
        ServiceThrottlingBehavior serviceThrottlingBehavior = (ServiceThrottlingBehavior)behavior;
        msg += "     maxConcurrentSessions =   " + serviceThrottlingBehavior.MaxConcurrentSessions.ToString() + Environment.NewLine;
    }
}
EventLog.WriteEntry("My Log Source", msg,  EventLogEntryType.Information);

这给了我800分。它支持那里的文档,其中默认为WCF 4.0及更高版本的处理器的默认值为100 * nb。

答案 1 :(得分:1)

this文章可能有所帮助......在底部有一节关于阅读限制值。

您需要在服务器端执行此操作(例如,在您的某个服务方法中)。此外,在示例中,它获取了第一个ChannelDispatcher ....对于您的特定场景,您可能有多于1个(不确定),具体取决于您正在做什么,这可能是您还需要考虑的条件。

HTH,Nathan