Domanda

Sto cercando un modo per registrare entrambe le richieste e le risposte in un servizio WCF REST. Lo starter kit WCF REST è dotato di una classe RequestInterceptor che può essere utilizzato per intercettare le richieste, ma non sembra essere un equivalente per le risposte. Idealmente, mi piacerebbe essere in grado di intercettare una risposta poco prima di essere inviati in rete, per esempio quando il metodo restituisce servizio sottostante. Qualche suggerimento?

È stato utile?

Soluzione

Si noti che se si vuole intercettare il messaggio grezzo, e non i parametri, è possibile iniettare l'implementazione di IDispatchMessageInspector invece del punto di estensione IParameterInspector che Dani suggerisce.

Altri suggerimenti

C'è una tecnica in WCF: si crea InstrumentedOperationAttribute che deriva da Attribute, IOperationBehavior.

All'interno di implementare:

public void ApplyDispatchBehavior(

   OperationDescription operationDescription,

   DispatchOperation dispatchOperation

   )
{

  dispatchOperation.ParameterInspectors.Add(

     new ServerPI()

     );

}

e () della classe ServerPI è ciò che fa la magia: si fa tutto il necessario in beforecall e AfterCall metodi:

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

  }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top