Verwendung von IDispatchMessageInspector in einem WCF-Dienst

Ich versuche es zu benutzenIDispatchMessageInspector in einer WCF-Dienstimplementierung, um auf benutzerdefinierte Headerwerte zuzugreifen.

So etwas wie:

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);            
    }
}

Ich habe meine eigene IDispatchMessageInspector-Klasse implementiert.

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;
    }
}

Wie komme ich vorbei?

System.ServiceModel.Channels.Botschaft und

System.ServiceModel.IClientChannel

zuAfterReceiveRequest namensvon der Service-Implementierung?

BEARBEITEN:

Viele Artikel mögendieses oderdieses, geben Sie Beispiele, wie Sie Ihre eigenen implementierenServiceBehavior. So sieht Ihre Service-Implementierung aus:

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

Also mit diesem kann ich zugreifenMyCustomBehavior irgendwie innerhalb der Service-Operation-Methode, um auf benutzerdefinierte Header-Werte zuzugreifen?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage