Freigeben über


Angeben des Clientlaufzeitverhaltens

Windows Communication Foundation (WCF)-Clients wie Windows Communication Foundation (WCF)-Dienste können so konfiguriert werden, dass sie das Laufzeitverhalten der Clientanwendung anpassen. Drei Attribute sind zum Angeben des Clientlaufzeitverhaltens verfügbar. Duplexclient-Rückrufobjekte können das CallbackBehaviorAttribute-Attribut und das CallbackDebugBehavior-Attribut verwenden, um ihr Laufzeitverhalten zu ändern. Das andere Attribut, ClientViaBehavior, kann verwendet werden, um das logische Ziel vom unmittelbaren Netzwerkziel zu trennen. Außerdem können Duplexclient-Rückruftypen Teile des Dienstseitenverhaltens verwenden. Weitere Informationen finden Sie unter Angeben des Dienstlaufzeitverhaltens.

Verwenden des CallbackBehaviorAttribute

Sie können das Ausführungsverhalten einer Rückrufvertragsimplementierung in einer Clientanwendung mit der CallbackBehaviorAttribute-Klasse konfigurieren oder erweitern. Dieses Attribut führt eine ähnliche Funktion für die Rückrufklasse wie die ServiceBehaviorAttribute-Klasse aus, das Instanziieren von Verhaltens- und Transaktionseinstellungen ausgenommen.

Die CallbackBehaviorAttribute-Klasse muss auf die Klasse angewendet werden, die den Rückrufvertrag implementiert. Beim Anwenden auf eine Nicht-Duplex-Vertragsimplementierung wird zur Laufzeit eine InvalidOperationException-Ausnahme ausgelöst. Das folgende Codebeispiel zeigt eine CallbackBehaviorAttribute-Klasse für ein Rückrufobjekt, das das SynchronizationContext-Objekt zur Bestimmung des Threads für das Marshallen verwendet, die ValidateMustUnderstand-Eigenschaft zum Erzwingen der Nachrichtenvalidierung und die IncludeExceptionDetailInFaults-Eigenschaft zum Zurückgeben von Ausnahmen als FaultException-Objekte an den Dienst zum Debuggen.

Verwenden von CallbackDebugBehavior zum Aktivieren des Flusses verwalteter Ausnahmeinformationen

Sie können den Fluss verwalteter Ausnahmeinformationen in einem Client-Rückrufobjekt zurück zum Dienst zum Debuggen aktivieren, indem Sie die IncludeExceptionDetailInFaults-Eigenschaft entweder programmgesteuert oder aus einer Anwendungskonfigurationsdatei auf true festlegen.

Verwaltete Ausnahmeinformationen an Dienste zurückzugeben, kann ein Sicherheitsrisiko darstellen, da Ausnahmedetails Informationen zur internen Clientimplementierung offen legen, die von nicht autorisierten Diensten verwendet werden können. Außerdem wird, obwohl die CallbackDebugBehavior-Eigenschaften auch programmgesteuert festgelegt werden können, bei der Bereitstellung das Deaktivieren von IncludeExceptionDetailInFaults schnell vergessen.

Wegen der damit verbundenen Sicherheitsprobleme wird Folgendes dringend empfohlen:

  • Verwenden Sie eine Anwendungskonfigurationsdatei, um den Wert der IncludeExceptionDetailInFaults-Eigenschaft auf true festzulegen.
  • Führen Sie diesen Vorgang nur in gesteuerten Debugszenarien aus.

Das folgende Codebeispiel zeigt eine Clientkonfigurationsdatei, die WCF anweist, verwaltete Ausnahmeinformationen aus einem Client-Rückrufobjekt in SOAP-Nachrichten zurückzugeben.

Verwenden des ClientViaBehavior-Verhaltens

Sie können mit dem ClientViaBehavior-Verhalten den URI (Uniform Resource Identifier) angeben, für den der Transportkanal erstellt werden soll. Verwenden Sie dieses Verhalten, wenn das unmittelbare Netzwerkziel nicht der gewünschte Prozessor der Nachricht ist. Dies ermöglicht Konversationen über mehrere Hops, wenn die aufrufende Anwendung das endgültige Ziel nicht unbedingt kennt oder wenn der Via-Header des Ziels keine Adresse ist.

Siehe auch

Konzepte

Angeben des Dienstlaufzeitverhaltens