Pregunta

Estoy buscando una manera de conectarse ambas solicitudes y respuestas en un servicio WCF REST. El kit de inicio WCF REST viene con una clase RequestInterceptor que puede ser utilizado para interceptar las peticiones, pero no parece ser un equivalente para las respuestas. Idealmente, me gustaría ser capaz de interceptar una respuesta justo antes de su transmisión por el cable, por ejemplo, cuando el método devuelve servicio subyacente. ¿Alguna sugerencia?

¿Fue útil?

Solución

Tenga en cuenta que si se desea interceptar el mensaje crudo, y no los parámetros, puede inyectarse su implementación de IDispatchMessageInspector en lugar del punto de extensión IParameterInspector que Dani sugiere.

Otros consejos

Hay una técnica en WCF: se crea InstrumentedOperationAttribute que se deriva de atributo, IOperationBehavior.

Dentro de implementar:

public void ApplyDispatchBehavior(

   OperationDescription operationDescription,

   DispatchOperation dispatchOperation

   )
{

  dispatchOperation.ParameterInspectors.Add(

     new ServerPI()

     );

}

y el () de clase ServerPI es lo que hace la magia: hacer todo lo que necesita en beforecall y 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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top