HOW TO:自訂系統提供的繫結
Windows Communication Foundation (WCF) 所包含的數種系統提供繫結可讓您設定一些基礎繫結項目的屬性,但不包含所有屬性。本主題示範如何設定繫結項目上的屬性來建立自訂繫結。
如需 如何直接建立與設定繫結項目,而不使用系統提供繫結的詳細資訊,請參閱自訂繫結。
如需 建立並延伸自訂繫結的詳細資訊,請參閱擴充繫結。
在 WCF 中,所有的繫結是由「繫結項目」(Binding Element) 所構成。每個繫結項目均衍生自 BindingElement 類別。諸如 BasicHttpBinding 的系統提供繫結,會建立並設定自有的繫結項目。本主題說明如何存取與變更這些繫結項目的屬性,而這些屬性並未直接在繫結上公開 (特別是 BasicHttpBinding 類別)。
個別的繫結項目會包含在由 BindingElementCollection 類別表示的集合中,並依下列順序新增:交易流程、可靠工作階段、安全性、複合雙工、單向、資料流安全性、訊息編碼和傳輸。請注意,並非每個繫結都需要所列的所有繫結項目。使用者定義的繫結項目也可以出現在此繫結項目集合中,而且必須依照前述順序。例如,使用者定義的傳輸必須是繫結項目集合中的最後一個項目。
BasicHttpBinding 類別包含三個繫結項目:
- 一種選擇性的安全性繫結項目,可以是搭配 HTTP 傳輸 (訊息層級安全性) 一起使用的 AsymmetricSecurityBindingElement 類別,或是當傳輸層提供安全性時所使用的 TransportSecurityBindingElement 類別 (這時會使用 HTTPS 傳輸)。
- 必要的訊息編碼器繫結項目,可以是 TextMessageEncodingBindingElement 或 MtomMessageEncodingBindingElement。
- 必要的傳輸繫結項目,可以是 HttpTransportBindingElement 或 HttpsTransportBindingElement。
在此範例中,我們會建立一個繫結執行個體、從中產生一個「自訂繫結」(Custom Binding)、檢查自訂繫結中的繫結項目,並在找到 HTTP 繫結項目時,將其 KeepAliveEnabled
屬性設為 false
。KeepAliveEnabled
屬性不會直接在 BasicHttpBinding
上公開,因此我們必須建立自訂繫結以向下巡覽至繫結項目並設定此屬性。
若要修改系統提供的繫結
建立 BasicHttpBinding 類別的執行個體,並將其安全性模式設為訊息層級。
從繫結中建立自訂繫結,並從其中一個自訂繫結的屬性中建立 BindingElementCollection 類別。
對 BindingElementCollection 類別執行迴圈,並在找到 HttpTransportBindingElement 類別時,將其 KeepAliveEnabled 屬性設為 false。
請參閱
參考
HttpTransportBindingElement
BasicHttpBinding
CustomBinding