1

有没有办法在服务器端检测我的 maxConcurrentSessions 或 maxConcurrentCalls 是否已用尽,即对我的服务的调用已排队?如果可以的话,我想记录一下。或者,IIS 是否提供任何帮助?

4

2 回答 2

0

要检测当前并发会话,您可以尝试向 ServiceClass 添加静态 int 字段:

public class MyService : IMyService, IDisposable
{
    // Service Instance Count
    private static int _NumberOfInstances;

    public MyService () 
    {
        MyService._NumberOfInstances++;
    }

    public void Method1()
    {
        // ...
    }

    public void Dispose()
    {
        MyService._NumberOfInstances--;
    }
}

根据定义: ConcurrentInstances 是在给定时间分配的服务实例数。当它是 PerCall 服务时,这个值与并发调用的数量相匹配。对于 PerSession 服务,此值等于活动会话实例的数量。

所以你可以检查你是否要超过你的最大值。

于 2012-11-12T20:58:40.390 回答
0

当您提出问题时,WCF 性能计数器可用。

于 2015-06-24T04:49:17.660 回答