c# – 一次性通过自定义跟踪侦听器记录WCF请求 – 响应

在我的WCF客户端应用程序;

>我正在尝试将请求和响应消息记录到单个数据库中
记录.因此,我需要匹配请求和响应消息.
>我想使用Trace Listener,因为它是一个开箱即用的功能,并希望通过log4net登录,但是我可以在自定义监听器中收到的是消息字符串.
>我对WCF服务的调用是异步和并行的.

有没有办法在Trace Listener级别匹配异步请求和响应?

最佳答案 使用IClientMessageInspector结束,因为我找不到在Trace Listener级别执行此操作的方法.

在标头中使用Ids将请求与响应相关联.

public object BeforeSendRequest(ref Message request, IClientChannel channel)
{            
        var key = request.Headers.MessageId.ToString();

        //Do stuff

        return null;
}
public void AfterReceiveReply(ref Message reply, object correlationState)
{            
        var key = reply.Headers.RelatesTo.ToString();            

        //Do stuff
}
点赞