C# WCF服务启用跟踪

C# WCF服务启用跟踪,c#,asp.net,.net,web-services,wcf,C#,Asp.net,.net,Web Services,Wcf,经过两天的反复尝试和盲目调试,我的web服务在某些情况下仍然会产生一些错误,现在我不知道为什么。 因此,我希望能够对服务进行跟踪,以便获得至少一点反馈 然而,我尝试了一些对web.config的添加,但是没有一个生成跟踪文件,即使服务响应错误 很长时间,这是我的web.config: <?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> &

经过两天的反复尝试和盲目调试,我的web服务在某些情况下仍然会产生一些错误,现在我不知道为什么。 因此,我希望能够对服务进行跟踪,以便获得至少一点反馈

然而,我尝试了一些对web.config的添加,但是没有一个生成跟踪文件,即使服务响应错误

很长时间,这是我的web.config:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
    <configSections>
    <section name="entityFramework"        type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
     </configSections>
     <connectionStrings>
     <...removed here... />
     </connectionStrings>
    <appSettings>
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
    </appSettings>
    <system.web>
    <customErrors mode="Off"></customErrors>
    <compilation targetFramework="4.5.1" />
    <httpRuntime targetFramework="4.5.1" />
    </system.web>
    <system.serviceModel>
    <services>
      <service name="TimeRecHomePage.Service.TimeService" behaviorConfiguration="TimeServiceBehavior">
        <endpoint name="webHttpBinding" address="" binding="webHttpBinding" bindingConfiguration="webHttpTransportSecurity" contract="TimeRecHomePage.Service.ITimeService" behaviorConfiguration="webHttp" />
        <endpoint name="mexHttpBinding" address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
      </service>
      </services>
      <bindings>
      <webHttpBinding>
        <binding name="webHttpTransportSecurity">
          <security mode="Transport" />
        </binding>
      </webHttpBinding>
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior name="TimeServiceBehavior">
          <serviceMetadata httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
        <behavior>
          <serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="webHttp">
          <webHttp defaultOutgoingResponseFormat="Json" automaticFormatSelectionEnabled="true" defaultBodyStyle="WrappedRequest" />
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <protocolMapping>
      <add binding="basicHttpsBinding" scheme="https" />
    </protocolMapping>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
    <directoryBrowse enabled="false" />
  </system.webServer>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v13.0" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.1.0.0" newVersion="5.1.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2" />
      </dependentAssembly>
      </assemblyBinding>
     </runtime>
     </configuration>

,并阅读

正如文档中所述,从Windows 8开始,您需要特权才能跟踪,我还更改了应用程序池标识,但没有成功(该服务在Win 2012 R2服务器上运行)

为了启用和使用跟踪,我缺少什么?
提前感谢您的努力

web.config中需要两个部分,一个是配置TraceListener的地方,另一个是system.serviceModel中的diagnostics部分

系统诊断 添加以下部分:

<system.diagnostics>
  <sources>
      <source name="System.ServiceModel.MessageLogging">
        <listeners>
                 <add name="messages"
                 type="System.Diagnostics.XmlWriterTraceListener"
                 initializeData="c:\temp\messages.svclog" />
          </listeners>
      </source>
      <source name="System.ServiceModel" switchValue="Information,ActivityTracing"
    propagateActivity="true">
        <listeners>
              <add name="tracing"
                 type="System.Diagnostics.XmlWriterTraceListener"
                 initializeData="c:\temp\tracing.svclog" />
        </listeners>
      </source>
    </sources>
</system.diagnostics>
测试你的设置
通过上面的配置,应该创建您的登录文件,并且
tracing.scvlog
应该在服务启动时或您为服务请求wsdl时显示条目。它还保存发生的任何异常和堆栈跟踪。

是否附加到WCF流程不是选项,或者是否仅在生产中发生故障?故障仅在生产中发生。我已经在VisualStudio中进行了本地调试,没有出现错误。
<system.serviceModel>
  <diagnostics>
    <messageLogging 
         logEntireMessage="true" 
         logMalformedMessages="true"
         logMessagesAtServiceLevel="true" 
         logMessagesAtTransportLevel="true"
         maxMessagesToLog="3000"
         maxSizeOfMessageToLog="2000"/>
  </diagnostics>
  <!-- your other stuff here -->
</system.serviceModel>