你好

我有一个WCF,我必须记录该请求和相关的响应。

今天,我似乎收到了请求和响应,但是我没有要关联的ID。

在.config中使用以下配置:

  <system.diagnostics>
    <sources>
      <source name="System.ServiceModel.MessageLogging">
        <listeners>
          <add name="xml" />
        </listeners>
      </source>
    </sources>
    <sharedListeners>
    <add name="xml" type="Ctx_Host.WebTraceListener, Ctx_Host" />
    </sharedListeners>
  </system.diagnostics>
  <system.serviceModel>
    <diagnostics>
      <messageLogging
          logEntireMessage="true"
          logMalformedMessages="false"
          logMessagesAtServiceLevel="true"
          logMessagesAtTransportLevel="true"
          maxMessagesToLog="300000"
          maxSizeOfMessageToLog="200000"/>
    </diagnostics>
  </system.serviceModel>


.cs代码是:

public class WebTraceListener : TraceListener
{
    public override void Write(string message)
    {
        using (var sw = new StreamWriter(@"F:\wcf\log.csv", true))
        {
            sw.WriteLine(message);
        }
    }


    public override void WriteLine(string message)
    {
        using (var sw = new StreamWriter(@"F:\wcf\log.csv", true))
        {
            sw.WriteLine(message);
        }
    }
}


您能告诉我是否可以通过这种方式链接请求和响应?

谢谢你的帮助

最佳答案

诊断会在消息中生成一个“ Correlation ActivityID”,并且与请求和响应相关。

此链接包含有关的更多信息,并可以帮助您:

http://www.codeproject.com/Articles/392926/Grouping-application-traces-using-ActivityId

关于ActivityID:

http://www.thejoyofcode.com/Propagating_the_ActivityId_to_a_WCF_service.aspx

07-28 01:38