Como usar o IDispatchMessageInspector em um serviço WCF?
Estou tentando usarIDispatchMessageInspector em uma implementação de serviço WCF para acessar valores de cabeçalho personalizados.
Algo como:
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);
}
}
Eu implementei minha própria 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;
}
}
Como passo
System.ServiceModel.Channels.mensagem e
System.ServiceModel.IClientChannel
paraAfterReceiveRequest chamadodesde a implementação do serviço?
EDITAR:
Muitos artigos comoeste oueste, dê exemplos de como implementar seu próprioServiceBehavior
. Portanto, sua implementação de serviço se parece com isso:
[MyCustomBehavior]
public class MyService : IMyService
{
public List<string> GetNames()
{
// Can you use 'MyCustomBehavior' here to access the header properties?
}
}
Então, com isso, posso acessarMyCustomBehavior
de alguma forma dentro do método de operação de serviço para acessar valores de cabeçalho personalizados?