Frage

Ich bin auf der Suche nach einer Möglichkeit, die beiden Anfragen und Antworten in einem WCF-REST-Dienst einzuloggen. Der WCF REST Starter-Kit kommt mit einem RequestInterceptor Klasse, die verwendet werden können Anfragen abfangen, aber es scheint nicht, ein Äquivalent für Antworten zu sein. Im Idealfall würde Ich mag Lage sein, eine Antwort abfangen, kurz bevor es über den Draht geschickt wird, z.B. wenn der zugrunde liegende Service-Methode zurückgibt. Irgendwelche Vorschläge?

War es hilfreich?

Lösung

Beachten Sie, dass, wenn Sie die rohe Nachricht abfangen wollen, und nicht die Parameter, können Sie Ihre Implementierung von IDispatchMessageInspector anstelle des IParameterInspector Erweiterungspunkt, dass Dani vermuten lässt.

Andere Tipps

Es gibt eine Technik in WCF: Erstellen Sie InstrumentedOperationAttribute, die von Attribut stammt, IOperationBehavior.

Innerhalb Sie implementieren:

public void ApplyDispatchBehavior(

   OperationDescription operationDescription,

   DispatchOperation dispatchOperation

   )
{

  dispatchOperation.ParameterInspectors.Add(

     new ServerPI()

     );

}

und die ServerPI () der Klasse ist, was die Magie tut: Sie tun alles, was Sie in beforecall und Aftercall Methoden müssen:

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

  }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top