Habe ich Ihnen gezeigt, wie Sie eine einfache Nachricht Inspektor zu erstellen, die Nachrichten-Header oder SOAP anzeigt. Heute werden wir die implementierten Klasse Service verbinden. Die schönste meiner Meinung nach, ist die Lösung behaviour'a zu implementieren, die dann Inspektor implementiert Nachricht verbindet. In Zukunft plant er, einen separaten Beitrag über behaviorach und deren Verwendung in der WCF zu schreiben. Aus der Sicht der Nachrichteninspektor genug, dass behaviory verwendet kennen, um die Funktionalität solcher. Endpoint'a zu verlängern.
So beginnen wir die Umsetzung behaviour'a für endpoint'a:
publicclass CustomBehaviour: IEndpointBehavior { publicvoid AddBindingParameters (ServiceEndpoint Endpunkt, Binding bindingParameters) { } publicvoid ApplyClientBehavior (ServiceEndpoint Endpunkt, Clientruntime Clientruntime) { } publicvoid ApplyDispatchBehavior (ServiceEndpoint Endpunkt, EndpointDispatcher EndpointDispatcher) { InspectorExample1 Inspektor = new InspectorExample1 (); endpointDispatcher.DispatchRuntime.MessageInspectors.Add (Inspektor); } publicvoid Validate (ServiceEndpoint Endpunkt) { } }
ApplyDispatchBehavior für Verhaltens Dienstleistungen verwendet werden (nicht auf dem Client). Bei dem Verfahren der einfach Inspektor zu schaffen und zu der Sammlung. Um die web.config Endpunkt in Übereinstimmung mit dem Verhalten konfigurieren angebracht wir müssen mehr BehaviorExtensionElement erstellen:
publicclass CustomBehaviorExtensionElement: BehaviorExtensionElement { protectedoverrideobject CreateBehavior () { returnnew CustomBehaviour (); } publicoverride Typ BehaviorType { bekommen { returntypeof (CustomBehaviour); } } }
Wie Sie Methoden und Eigenschaften nur nachladen zu sehen. Klasse ist notwendig, vordefinierte Verhalten in der web.config-Datei zu verwenden. Sie ließen uns nur die entsprechende Konfigurationsdatei zu ändern:
<? Xml version = "1.0" encoding = "utf-8"?> <Konfiguration> <system.serviceModel> <Dienste> <service name = "WebApp.OrderService"> <Endpunkt behaviorConfiguration = "WebAppBeaviour" Adresse = " Bindung = "wsHttpBinding" bindingConfiguration = "customWsHttpBinding" contract="WebApp.OrderService.IOrderService"/></service></services><extensions><behaviorExtensions><add name = "WebAppBeaviourElement" type = "WebApp.Extensions.CustomBehaviorExtensionElement, WebApp.Extensions, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null" /> </ behaviorExtensions> </ Erweiterungen> <Verhaltensweisen> <endpointBehaviors> <Verhalten name = "WebAppBeaviour"> <WebAppBeaviourElement /> </ Verhalten> </ endpointBehaviors> </ Verhalten> <Bindungen> <wsHttpBinding> <binding name = "customWsHttpBinding"> <security mode = "None" /> </ binding> < / wsHttpBinding> </ bindings> </ system.serviceModel> </ configuration>
BehaviourExtension erlaubt das Nutzungsverhalten in der Konfigurationsdatei. Direkt zu behavior'a können wir nicht in der web.config referenziert werden.