WCF 服务实例未在 perfmon 中显示

Posted

技术标签:

【中文标题】WCF 服务实例未在 perfmon 中显示【英文标题】:WCF Service instance not showing in perfmon 【发布时间】:2012-03-26 13:03:41 【问题描述】:

我有一个自托管的 WCF 服务,我正在尝试启用性能计数器,因此我已将其添加到 web.config 文件中:

<system.serviceModel>
  <diagnostics performanceCounters="All" />
  ...

运行我的服务并确保它正在运行后,我打开 perfmon.exe 并尝试添加性能计数器。但是,“选定对象的实例”框中没有显示任何内容。

我的 app.config:

<?xml version="1.0"?>
<configuration>
  <system.diagnostics>
    <sources>
      <source name="System.ServiceModel.MessageLogging" switchValue="Warning, ActivityTracing">
        <listeners>
          <add type="System.Diagnostics.DefaultTraceListener" name="Default">
            <filter type="" />
          </add>
        </listeners>
      </source>
    </sources>
  </system.diagnostics>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>
  <system.serviceModel>
    <diagnostics wmiProviderEnabled="true" performanceCounters="All">
      <messageLogging logMalformedMessages="false" logMessagesAtServiceLevel="false"
        logMessagesAtTransportLevel="false" />
    </diagnostics>
    <bindings>
      <ws2007HttpBinding>
        <binding name="soapBinding" maxReceivedMessageSize="1073741824">
          <readerQuotas maxStringContentLength="1073741824" maxArrayLength="1073741824" />
          <security mode="Message">
            <transport clientCredentialType="Windows" proxyCredentialType="None" realm=""/>
            <message clientCredentialType="Windows" negotiateServiceCredential="true" algorithmSuite="Default" />
          </security>
        </binding>
      </ws2007HttpBinding>
    </bindings>
    <services>
      <service behaviorConfiguration="defaultBehavior" name="SoapService">
        <endpoint address="http://localhost/SoapService/"
          binding="ws2007HttpBinding" bindingConfiguration="soapBinding" name=""
          contract="ISoapService" />
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost/SoapService/" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="defaultBehavior">
          <serviceAuthorization impersonateCallerForAllOperations="false" />
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

为什么 perfmon 不显示任何正在运行的实例?

顺便说一句,如果 app.config 没有为您运行 .NET v4 突出显示

【问题讨论】:

【参考方案1】:

不知道它是否仍然有效,但让我尝试一个答案。

有很多事情你应该检查:

您的目标是 .net 4。某些计数器将位于 ServiceModelXXX 4.0.0.0 中。 有时,您需要重新安装 WCF 计数器。访问此post 获取命令行。 在第一次调用之前,计数器实例不存在(如果不使用 appfabric 自动启动) 您的帐户应具有所需权限:性能监视器/日志用户

【讨论】:

以上是关于WCF 服务实例未在 perfmon 中显示的主要内容,如果未能解决你的问题,请参考以下文章

异常的 WCF 客户端行为

如何让 SqlServer 计数器的 .NET 数据提供程序显示在 Perfmon 中

WCF 服务未在服务器以外的其他设备上运行

MVC 中的下拉菜单未加载 WCF 服务调用的编辑函数上的数据

jmeter中通过PerfMon Metrics Collector插件监控CPU和内存等等显示ConnectException连接超时杭州多测师_王sir

自定义 404 未在实时服务器上的 Codeigniter 中显示