Registrando solicitações / respostas em um serviço WCF RESTO
Pergunta
Eu estou procurando uma maneira de registrar ambos os pedidos e respostas em um serviço WCF REST. O starter kit WCF resto vem com uma classe RequestInterceptor que pode ser usado para pedidos de interceptação, mas não parece ser um equivalente para as respostas. Idealmente, eu gostaria de ser capaz de interceptar uma resposta pouco antes de ser enviado ao longo do fio, por exemplo, quando o método de serviço subjacentes retornos. Alguma sugestão?
Solução
Observe que, se você quiser interceptar a mensagem crua, e não os parâmetros, você pode injetar sua implementação do IDispatchMessageInspector em vez do ponto de extensão IParameterInspector que Dani sugere.
Outras dicas
Há uma técnica em WCF: você cria InstrumentedOperationAttribute que deriva de Atributo, IOperationBehavior.
Dentro de você implementar:
public void ApplyDispatchBehavior(
OperationDescription operationDescription,
DispatchOperation dispatchOperation
)
{
dispatchOperation.ParameterInspectors.Add(
new ServerPI()
);
}
eo ServerPI () da classe é o que faz a mágica: você faz tudo o que você precisa em beforecall e AfterCall métodos:
class ServerPI : IParameterInspector
{
public void AfterCall(string operationName, object[] outputs, object returnValue, object correlationState)
{
Guid result = (Guid)correlationState;
// ...
}
public object BeforeCall(string operationName, object[] inputs)
{
string parameter1 = inputs[0] as string;
return Guid.NewGuid();
}
}