2009-08-04 14 views
1

Ich entwickle einen WCF-Dienst, bei dem ich eingehende Nachrichten für benutzerdefinierte Validierungen abfangen muss. Nach meinen Recherchen fand ich, dass ich IDispatchMessageInspector für diesen Zweck implementieren muss. Also habe ich meine benutzerdefinierten Validierungen in die AfterReceiveRequest-Methode der Schnittstelle eingefügt.WCF-Nachrichteninspektoren

Das Problem: Wenn ich den Code debuggen, sah ich, dass Nachrichtenempfang nicht die AfterReceiveRequest-Methode auslösen, die ich implementiert habe.

Die Frage: Muss ich meine Klasse/Methode irgendwo registrieren, um auszulösen, wenn Nachrichten empfangen werden?

+0

Vielen Dank marc_s für Ihre Antwort. Deine Hilfe wird geschätzt. :) –

Antwort

2

Sie haben den IDispatchMessageInspector implementiert - aber haben Sie ihn auf der Server-Seite in die .Behaviors-Sammlung von ServiceHost aufgenommen, damit er darin enthalten ist?

Sehen Sie diese blog post für Details - zuerst müssen Sie eine Klasse erstellen Implementierung IEndpointBehavior (oder eine IServiceBehavior - je nachdem, was Sie brauchen) und implementieren die ApplyDispatchBehavior Methode auf sie.

Dann müssen Sie dieses Verhalten entweder dem ServiceHost hinzufügen, bevor Sie es öffnen, oder Sie müssen eine andere Klasse erstellen, damit Sie dieses Verhalten für Ihren Service konfigurieren können.

Marc