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?

Foi útil?

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();
    }

  }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top