Ich versuche, IDispatchMessageInspector in einer Implementierung des WCF-Diensts zu verwenden, um auf benutzerdefinierte Headerwerte zuzugreifen.Wie IDispatchMessageInspector in einem WCF-Dienst verwenden?
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 gehe ich
System.ServiceModel.Channels. Nachricht und
System.ServiceModel. IClientChannel
zu AfterReceiveRequestvon der Service-Implementierung genannt?
EDIT:
Viele Artikel wie this one oder this one, geben Beispiele, wie Sie Ihre eigenen ServiceBehavior
zu implementieren. So Ihre 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 MyCustomBehavior
zugreifen irgendwie innerhalb der Service-Operation Methode, um benutzerdefinierte Header-Werte zugreifen?
http://blogs.msdn.com/b/zelmalki/archive/2008/12/29/creating-a- nennen wcf-idispatchmessagerinspector.aspx das könnte sehr hilfreich sein –