Como usar o IDispatchMessageInspector em um serviço WCF?

Estou tentando usarIDispatchMessageInspector em uma implementação de serviço WCF para acessar valores de cabeçalho 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);            
    }
}

Eu implementei minha própria classe 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 passo

System.ServiceModel.Channels.mensagem e

System.ServiceModel.IClientChannel

paraAfterReceiveRequest chamadodesde a implementação do serviço?

EDITAR:

Muitos artigos comoeste oueste, dê exemplos de como implementar seu próprioServiceBehavior. Portanto, sua implementação de serviço se parece com isso:

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

Então, com isso, posso acessarMyCustomBehavior de alguma forma dentro do método de operação de serviço para acessar valores de cabeçalho personalizados?

questionAnswers(5)

yourAnswerToTheQuestion