Wie zu verwenden IDispatchMessageInspector in einem WCF-Dienst?

Ich versuche, mit IDispatchMessageInspector in einer WCF-service-Implementierung für den Zugriff auf benutzerdefinierte header-Werte.

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

Habe ich umgesetzt, meine eigenen IDispatchMessageInspector Klasse.

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 gebe ich

  • System.ServiceModel.Kanäle.Nachricht und

  • System.ServiceModel.IClientChannel

zu AfterReceiveRequest genannt von der service-Implementierung?

EDIT:

Viele Artikel wie diese eine oder diese eine, geben Beispiele, wie die Umsetzung Ihrer eigenen ServiceBehavior. So Ihr service-Implementierung sieht wie folgt 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 auf MyCustomBehavior irgendwie innerhalb der service operation Methode für den Zugriff auf benutzerdefinierte header-Werte?

InformationsquelleAutor Didaxis | 2014-06-13
Schreibe einen Kommentar