Sto tentando di utilizzare IDispatchMessageInspector in un'implementazione del servizio WCF per accedere a valori di intestazione personalizzati.Come utilizzare IDispatchMessageInspector in un servizio WCF?
Qualcosa di simile:
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);
}
}
ho implementato mia 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;
}
}
Come faccio a passare
System.ServiceModel.Channels. Messaggio e
System.ServiceModel. IClientChannel
a AfterReceiveRequest chiamato dalla implementazione del servizio?
EDIT:
Molti articoli come this one o this one, dare esempi su come implementare il proprio ServiceBehavior
. Così il vostro implementazione del servizio è simile al seguente:
[MyCustomBehavior]
public class MyService : IMyService
{
public List<string> GetNames()
{
// Can you use 'MyCustomBehavior' here to access the header properties?
}
}
Quindi, con questo, posso accedere MyCustomBehavior
in qualche modo all'interno del metodo di funzionamento del servizio per accedere ai valori di intestazione personalizzati?
http://blogs.msdn.com/b/zelmalki/archive/2008/12/29/creating-a- wcf-idispatchmessageinspector.aspx questo potrebbe essere molto utile –