C# 获取当前默认maxConcurrentSessions设置

C# 获取当前默认maxConcurrentSessions设置,c#,wcf,C#,Wcf,有人知道我如何通过代码获得基于会话的WCF服务上maxConcurrentSessions的当前设置吗 即使服务配置文件中未设置maxConcurrentSessions,我也希望获得该值,换句话说,在这种情况下,我希望获得默认值 基本上,我试图毫无疑问地证明,在我当前的环境中,maxConcurrentSessions的默认值是多少 谢谢 这篇文章可能会有所帮助……底部有一个关于读取限制值的部分 您需要在服务器端执行此操作(例如,在您的一个服务方法中)。此外,在示例中,它将获得第一个Chann

有人知道我如何通过代码获得基于会话的WCF服务上maxConcurrentSessions的当前设置吗

即使服务配置文件中未设置maxConcurrentSessions,我也希望获得该值,换句话说,在这种情况下,我希望获得默认值

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

谢谢

这篇文章可能会有所帮助……底部有一个关于读取限制值的部分

您需要在服务器端执行此操作(例如,在您的一个服务方法中)。此外,在示例中,它将获得第一个ChannelDispatcher…对于您的特定场景,您可能有超过1个(不确定),这取决于您正在执行的操作,这可能是您还需要考虑的一个条件


嗯,Nathan

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

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

这给了我800英镑。它支持文档中所述的WCF 4.0及更高版本的默认处理器数量为100*nb。

谢谢,这接近解决方案,我确信,但如果配置文件中未设置任何throttleBehavior,则我不会得到任何throttleBehavior。。。发现了一个窍门,我现在就发布它。只是要澄清一下:从.NET 4.5中,它说:“默认值是处理器计数的100倍。”而对于.NET 4.0,它说:“默认值是10。”:)
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);