¿Cómo usar IDispatchMessageInspector en un servicio WCF?

Estoy tratando de usarIDispatchMessageInspector en una implementación de servicio WCF para acceder a valores de encabezado personalizados.

Algo como:

public class MyService : IMyService
{
    public List<string> GetNames()
    {
        var headerInspector = new CustomHeaderInspector();

        // Where do request & client channel come from?
        var values = headerInspector.AfterReceiveRequest(ref request, clientChannel, OperationContext.Current.InstanceContext);            
    }
}

He implementado mi propia clase IDispatchMessageInspector.

public class CustomHeaderInspector : IDispatchMessageInspector
{
    public object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext)
    {
        var prop = (HttpRequestMessageProperty)request.Properties[HttpRequestMessageProperty.Name];
        var userName = prop.Headers["Username"];

        return userName;
    }
}

Como paso

System.ServiceModel.Channels.Mensaje y

System.ServiceModel.IClientChannel

aAfterReceiveRequest llamadode la implementación del servicio?

EDITAR:

Muchos artículos comoéste oéste, da ejemplos de cómo implementar tu propioServiceBehavior. Entonces la implementación de su servicio se ve así:

[MyCustomBehavior]
public class MyService : IMyService
{
    public List<string> GetNames()
    {
        // Can you use 'MyCustomBehavior' here to access the header properties?
    }
}

Entonces con esto, ¿puedo acceder?MyCustomBehavior de alguna manera dentro del método de operación del servicio para acceder a valores de encabezado personalizados?

Respuestas a la pregunta(5)

Su respuesta a la pregunta