共用方式為


HOW TO:自訂系統提供的繫結

Windows Communication Foundation (WCF) 所包含的數種系統提供繫結可讓您設定一些基礎繫結項目的屬性,但不包含所有屬性。本主題示範如何設定繫結項目上的屬性來建立自訂繫結。

如需 如何直接建立與設定繫結項目,而不使用系統提供繫結的詳細資訊,請參閱自訂繫結

如需 建立並延伸自訂繫結的詳細資訊,請參閱擴充繫結

在 WCF 中,所有的繫結是由「繫結項目」(Binding Element) 所構成。每個繫結項目均衍生自 BindingElement 類別。諸如 BasicHttpBinding 的系統提供繫結,會建立並設定自有的繫結項目。本主題說明如何存取與變更這些繫結項目的屬性,而這些屬性並未直接在繫結上公開 (特別是 BasicHttpBinding 類別)。

個別的繫結項目會包含在由 BindingElementCollection 類別表示的集合中,並依下列順序新增:交易流程、可靠工作階段、安全性、複合雙工、單向、資料流安全性、訊息編碼和傳輸。請注意,並非每個繫結都需要所列的所有繫結項目。使用者定義的繫結項目也可以出現在此繫結項目集合中,而且必須依照前述順序。例如,使用者定義的傳輸必須是繫結項目集合中的最後一個項目。

BasicHttpBinding 類別包含三個繫結項目:

  1. 一種選擇性的安全性繫結項目,可以是搭配 HTTP 傳輸 (訊息層級安全性) 一起使用的 AsymmetricSecurityBindingElement 類別,或是當傳輸層提供安全性時所使用的 TransportSecurityBindingElement 類別 (這時會使用 HTTPS 傳輸)。
  2. 必要的訊息編碼器繫結項目,可以是 TextMessageEncodingBindingElementMtomMessageEncodingBindingElement
  3. 必要的傳輸繫結項目,可以是 HttpTransportBindingElementHttpsTransportBindingElement

在此範例中,我們會建立一個繫結執行個體、從中產生一個「自訂繫結」(Custom Binding)、檢查自訂繫結中的繫結項目,並在找到 HTTP 繫結項目時,將其 KeepAliveEnabled 屬性設為 falseKeepAliveEnabled 屬性不會直接在 BasicHttpBinding 上公開,因此我們必須建立自訂繫結以向下巡覽至繫結項目並設定此屬性。

若要修改系統提供的繫結

  1. 建立 BasicHttpBinding 類別的執行個體,並將其安全性模式設為訊息層級。

  2. 從繫結中建立自訂繫結,並從其中一個自訂繫結的屬性中建立 BindingElementCollection 類別。

  3. BindingElementCollection 類別執行迴圈,並在找到 HttpTransportBindingElement 類別時,將其 KeepAliveEnabled 屬性設為 false

請參閱

參考

HttpTransportBindingElement
BasicHttpBinding
CustomBinding

概念

自訂繫結