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

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

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

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

我知道它并不理想,但您可以将当前用于生成计数器实例名称的.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算法的任何更改都将破坏您的实现。

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