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?