You can use message inspector to log, inspect, modify or completely replace a message by implementing IClientMessageInspector (client side) or IDispatchMessageInspector (server side)
#region IDispatchMessageInspector Implementation
public object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext)
{
//You can access the body of a Message only once, regardless of how it is accessed.
//http://msdn.microsoft.com/en-us/library/ms734675.aspx
request = LogMessage(request.CreateBufferedCopy(int.MaxValue));
return null;
}
#endregion
Now this can be added through Endpoint/Service/Contract behavior
public class LogMessageEndpointBehavior : Attribute, IEndpointBehavior
{
public void ApplyDispatchBehavior(ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher)
{
endpointDispatcher.DispatchRuntime.MessageInspectors.Add(new LoggingMessageInspector());
}
}
No comments:
Post a Comment