在反序列化客户端请求之前和响应序列化之后挂钩到WCF服务

时间:2014-08-19 02:41:32

标签: .net wcf hook net.tcp

有没有办法让来自客户端的每个调用都挂钩到WCF服务

  1. 只要在服务器端注意到客户端请求(即在反序列化请求之前)
  2. 序列化完成后
  3. 以便例如这些点可以添加到延迟测量中。如果这是特定于我们正在使用的net.tcp,那就没关系。

    我想添加一个IDispatchMessageInspector可以让我在反序列化请求之前挂入 (虽然在创建Message object之后,我想要甚至在那之前挂钩),但在响应序列化之后不是

2 个答案:

答案 0 :(得分:1)

要在反序列化请求之前挂钩 ,我正在包裹MessageEncoder(我还必须包裹MessageEncoderFactoryMessageEncodingBindingElement

然后我可以挂钩MessageEncoder.ReadMessage()重载。

<小时/> 要在序列化响应后挂钩,我正在包装IOutputChannel(我还必须包装IChannelListenerTcpTransportBindingElement),

然后我可以加入IOutputChannel.Send() / IOutputChannelEndSend()重载。

它和我一样接近电线,并且足够接近我。

答案 1 :(得分:0)

如果您要求的唯一事情是捕获在调用给定服务时发送/接收的消息,您可以使用以下链接中的建议:

https://msdn.microsoft.com/en-us/library/ms735120(v=vs.110).aspx

https://msdn.microsoft.com/en-us/library/aa702726(v=vs.110).aspx

这将允许您以Xml。

将所有正在发送和接收的消息捕获到磁盘