服务模型性能计数器实例名称

时间:2016-03-02 13:02:03

标签: c# wcf performancecounter

我正在尝试直接连接到ServiceModel发出的性能计数器(用于服务,端点和操作)。问题是,当我尝试与某个服务(或端点/操作)关联时,我需要指定计数器的实例名称。

根据MSDN实例名称简单的模式, 但是在某些情况下,当实例名称的一个组件(uri,合同名称等)太长时,它会缩短,并且在字符串的开头或结尾添加哈希码。本文没有说明如何它是哈希。

所以我的问题是有一种方法可以根据服务名称及其地址获取ServiceModel实例名称

1 个答案:

答案 0 :(得分:2)

我知道这不太理想,但您可以将当前用于生成计数器实例名称的.NET实现复制到您自己的代码/应用程序中,以编程方式从完整的服务名称和地址生成相同的名称。

您可以在此处查看WCF使用的代码:

对于SerivcePerformanceCounters:

http://referencesource.microsoft.com/#System.ServiceModel/System/ServiceModel/Diagnostics/ServicePerformanceCountersBase.cs,6d61d34585241697

对于EndpointPerformanceCounters:

http://referencesource.microsoft.com/#System.ServiceModel/System/ServiceModel/Diagnostics/EndpointPerformanceCountersBase.cs,e3319d41297320e3

对于OperationPerformanceCounters:

http://referencesource.microsoft.com/#System.ServiceModel/System/ServiceModel/Diagnostics/OperationPerformanceCountersBase.cs,5e170817afd5d0ba

缺点是对命名实例的.NET算法的任何更改都将破坏您的实现。

我很沮丧,但没有找到更好的解决方案。