WCF имеет лот точек расширения для таких вещей.Вероятно, вам нужно нестандартное поведение, которое реализует IDispatchMessageInspector
.
Создайте класс, который выглядит следующим образом:
public class MyCustomBehavior : IDispatchMessageInspector, IEndpointBehavior
{
public object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext)
{
//here you can work with request.Headers.
return null;
}
public void ApplyDispatchBehavior(ServiceEndpoint endpoint, EndpointDispatcher endpointDispatcher)
{
endpointDispatcher.DispatchRuntime.MessageInspectors.Add(this);
}
//there are a bunch of other methods needed
//but you can leave their implementations empty.
//...
}
Затем вы можете программно добавить свое пользовательское поведение в конечную точку службы перед тем, как открыть службу:
host.Description.Endpoints[0].Behaviors.Add(new WcfService2.MyCustomBehavior());
У Паоло Пиалорси есть хороший учебник , который касается написания сообщений инспекторов.