Gewusst wie: Anpassen einer vom System bereitgestellten Bindung

Windows Communication Foundation (WCF) umfasst mehrere systemseitig bereitgestellte Bindungen, bei denen Sie einige der Eigenschaften von zugrundeliegenden Bindungselementen konfigurieren können. Es lassen sich jedoch nicht alle Eigenschaften konfigurieren. In diesem Thema wird veranschaulicht, wie Sie Eigenschaften für die Bindungselemente festlegen, um eine benutzerdefinierte Bindung zu erstellen.

Weitere Informationen zur direkten Erstellung und Konfiguration von Bindungselementen, ohne die systemseitig bereitgestellten Bindungen zu verwenden, finden Sie unter Benutzerdefinierte Bindungen.

Weitere Informationen zur Erstellung und Erweiterung benutzerdefinierter Bindungen finden Sie unter Erweitern von Bindungen.

In WCF bestehen alle Bindungen aus Bindungselementen. Jedes Bindungselement wird von der BindingElement-Klasse abgeleitet. Systemseitig bereitgestellte Bindungen wie BasicHttpBinding erstellen und konfigurieren ihre eigenen Bindungselemente. In diesem Thema wird gezeigt, wie Sie auf die Eigenschaften dieser Bindungselemente zugreifen und sie ändern können. Die Elemente sind nicht direkt über die Bindung verfügbar. Dies trifft insbesondere auf die BasicHttpBinding-Klasse zu.

Die einzelnen Bindungselemente sind in einer Auflistung, die von der BindingElementCollection-Klasse dargestellt wird, enthalten, und werden in dieser Reihenfolge hinzugefügt: Transaktionsfluss, zuverlässige Sitzung, Sicherheit, Composite Duplex, Eindirektional, Streamsicherheit, Nachrichtenverschlüsselung und Transport. Beachten Sie, dass nicht alle aufgelisteten Bindungselemente in jeder Bindung erforderlich sind. Auch benutzerdefinierte Bindungselemente können in dieser Auflistung enthalten sein und müssen in der gerade beschriebenen Reihenfolge angezeigt werden. Zum Beispiel muss ein benutzerdefinierter Transport das letzte Element der Bindungselementeauflistung sein.

Die BasicHttpBinding-Klasse enthält drei Bindungselemente:

  1. Ein optionales Sicherheitsbindungselement, entweder die beim HTTP-Transport verwendete AsymmetricSecurityBindingElement-Klasse (Sicherheit auf Nachrichtenebene) oder die TransportSecurityBindingElement-Klasse, die verwendet wird, wenn die Transportschicht für die Sicherheit sorgt. In diesem Fall wird der HTTPS-Transport verwendet.
  2. Ein erforderliches Bindungselement zur Nachrichtenverschlüsselung, entweder TextMessageEncodingBindingElement oder MtomMessageEncodingBindingElement.
  3. Ein erforderliches Transportbindungselement, entweder HttpTransportBindingElement oder HttpsTransportBindingElement.

In diesem Beispiel werden eine Instanz der Bindung erstellt, eine benutzerdefinierte Bindung aus dieser Instanz erstellt, die Bindungselemente der benutzerdefinierten Bindung untersucht und wenn das HTTP-Bindungselement gefunden wird, wird dessen KeepAliveEnabled-Eigenschaft auf false festgelegt. Die KeepAliveEnabled-Eigenschaft steht nicht direkt über die BasicHttpBinding zur Verfügung, sodass eine benutzerdefinierte Bindung erstellt werden muss, um zum Bindungselement zu navigieren und dessen Eigenschaft festzulegen.

So ändern Sie eine vom System bereitgestellte Bindung

  1. Erstellen Sie eine Instanz der BasicHttpBinding-Klasse und legen Sie ihren Sicherheitsmodus auf die Nachrichtenebene fest.

  2. Erstellen Sie eine benutzerdefinierte Bindung aus dieser Bindung, und erstellen Sie eine BindingElementCollection-Klasse aus einer der Eigenschaften der benutzerdefinierten Bindung.

  3. Durchlaufen Sie die BindingElementCollection-Klasse, und wenn Sie die HttpTransportBindingElement-Klasse gefunden haben, legen Sie deren KeepAliveEnabled-Eigenschaft auf false fest.

Siehe auch

Referenz

HttpTransportBindingElement
BasicHttpBinding
CustomBinding

Konzepte

Benutzerdefinierte Bindungen