CustomBinding 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
從繫結項目的清單定義繫結。
public ref class CustomBinding : System::ServiceModel::Channels::Binding
public class CustomBinding : System.ServiceModel.Channels.Binding
[System.Windows.Markup.ContentProperty("Elements")]
public class CustomBinding : System.ServiceModel.Channels.Binding
type CustomBinding = class
inherit Binding
[<System.Windows.Markup.ContentProperty("Elements")>]
type CustomBinding = class
inherit Binding
Public Class CustomBinding
Inherits Binding
- 繼承
- 屬性
範例
下列範例會示範如何使用 CustomBinding 和 ReliableSessionBindingElement 來建立 HttpTransportBindingElement 物件
Uri baseAddress = new Uri("http://localhost:8000/servicemodelsamples/service");
// Create a ServiceHost for the CalculatorService type and provide the base address.
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress))
{
// Create a custom binding that contains two binding elements.
ReliableSessionBindingElement reliableSession = new ReliableSessionBindingElement();
reliableSession.Ordered = true;
HttpTransportBindingElement httpTransport = new HttpTransportBindingElement();
httpTransport.AuthenticationScheme = System.Net.AuthenticationSchemes.Anonymous;
httpTransport.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard;
CustomBinding binding = new CustomBinding(reliableSession, httpTransport);
// Add an endpoint using that binding.
serviceHost.AddServiceEndpoint(typeof(ICalculator), binding, "");
// Add a MEX endpoint.
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
smb.HttpGetUrl = new Uri("http://localhost:8001/servicemodelsamples");
serviceHost.Description.Behaviors.Add(smb);
// Open the ServiceHostBase to create listeners and start listening for messages.
serviceHost.Open();
// The service can now be accessed.
Console.WriteLine("The service is ready.");
Console.WriteLine("Press <ENTER> to terminate service.");
Console.WriteLine();
Console.ReadLine();
// Close the ServiceHostBase to shutdown the service.
serviceHost.Close();
}
Dim baseAddress As New Uri("http://localhost:8000/servicemodelsamples/service")
' Create a ServiceHost for the CalculatorService type and provide the base address.
Using serviceHost As New ServiceHost(GetType(CalculatorService), baseAddress)
' Create a custom binding that contains two binding elements.
Dim reliableSession As New ReliableSessionBindingElement()
reliableSession.Ordered = True
Dim httpTransport As New HttpTransportBindingElement()
httpTransport.AuthenticationScheme = System.Net.AuthenticationSchemes.Anonymous
httpTransport.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard
Dim binding As New CustomBinding(reliableSession, httpTransport)
' Add an endpoint using that binding.
serviceHost.AddServiceEndpoint(GetType(ICalculator), binding, "")
' Add a MEX endpoint.
Dim smb As New ServiceMetadataBehavior()
smb.HttpGetEnabled = True
smb.HttpGetUrl = New Uri("http://localhost:8001/servicemodelsamples")
serviceHost.Description.Behaviors.Add(smb)
' Open the ServiceHostBase to create listeners and start listening for messages.
serviceHost.Open()
' The service can now be accessed.
Console.WriteLine("The service is ready.")
Console.WriteLine("Press <ENTER> to terminate service.")
Console.WriteLine()
Console.ReadLine()
' Close the ServiceHostBase to shutdown the service.
serviceHost.Close()
End Using
備註
當系統提供的其中一個繫結程序不符合服務的需求時,請使用自訂繫結程序。 例如,若要在服務端點上啟用新的傳輸或新的編碼器,可以使用自訂繫結。
在建構自訂繫結時,會使用依據特定順序堆疊之繫結項目集合中的其中一個 CustomBinding:
在最上方為允許流動異動的選擇性 TransactionFlowBindingElement。
接下來是選擇性 ReliableSessionBindingElement,它會提供 WS-ReliableMessaging 規格中所定義的工作階段和排序機制。 這個工作階段概念可以跨越 SOAP 和傳輸媒介。
接下來是選擇性安全性繫結項目,它會提供類似授權、驗證 (Authentication)、保護和機密性等安全性功能。 Windows Communication Foundation (WCF) 提供下列安全性繫結元素:
接下來是繫結項目所指定的選擇性訊息模式:
接下來是選擇性傳輸升級/helper 繫結項目:
再來是必要的訊息編碼繫結項目。 您可以使用自己的傳輸或是使用下列其中一個訊息編碼繫結:
最下方是必要的傳輸項目。 您可以使用自己的傳輸,或使用 Windows Communication Foundation (WCF) 所提供的其中一個傳輸繫結元素:
下表摘要列出每一層的選項。
層 | 選項。 | 必要 |
---|---|---|
異動流程 | TransactionFlowBindingElement | 否 |
可靠性 | ReliableSessionBindingElement | 否 |
安全性 | 對稱、不對稱、傳輸層級 | 否 |
形狀變更 | CompositeDuplexBindingElement | 否 |
傳輸升級 | SSL 資料流、Windows 資料流、對等解析程式 | 否 |
編碼 | 文字、二進位、MTOM、自訂 | 是 |
傳輸 | TCP、具名管道、HTTP、HTTPS、MSMQ 的類別、自訂 | 是 |
此外,您也可以定義自己的繫結項目,並將其插入上述任何定義層之間。
如需如何使用自訂繫結來修改系統所提供繫結的討論,請參閱如何:自訂系統提供的繫結。
注意
從以 .NET Framework 3.5 或更早版本建置的 WCF 用戶端應用程式呼叫使用 .NET Framework 4.0 或更新版本建置的 WCF 服務時,svcutil.exe 或從 Visual Studio 新增服務參考所產生的組態檔將會包含系結組態中的有效屬性。 .NET Framework 3.5 執行時間無法辨識這個屬性,而且應用程式會擲回 ,並顯示ConfigurationErrorsException「無法辨識的屬性有效性」訊息。 若要解決這個問題,請移除繫結組態中的 validity 屬性。
建構函式
CustomBinding() |
初始化 CustomBinding 類別的新執行個體。 |
CustomBinding(Binding) |
從指定之繫結的值,初始化 CustomBinding 類別的新執行個體。 |
CustomBinding(BindingElement[]) |
從繫結項目的陣列初始化 CustomBinding 類別的新執行個體。 |
CustomBinding(IEnumerable<BindingElement>) |
使用完整通道堆疊中的繫結項目,初始化 CustomBinding 類別的新執行個體。 |
CustomBinding(String) |
初始化 CustomBinding 類別的新執行個體。 |
CustomBinding(String, String, BindingElement[]) |
從具有指定之名稱和命名空間的繫結項目陣列,初始化 CustomBinding 類別的新執行個體。 |
屬性
CloseTimeout |
取得或設定針對連線所提供的時間間隔 (此連線要在傳輸引發例外狀況之前關閉)。 (繼承來源 Binding) |
Elements |
從自訂繫結取得繫結項目。 |
MessageVersion |
取得用戶端所使用的訊息版本及使用繫結所設定的服務。 (繼承來源 Binding) |
Name |
取得或設定繫結的名稱。 (繼承來源 Binding) |
Namespace |
取得或設定繫結的 XML 命名空間。 (繼承來源 Binding) |
OpenTimeout |
取得或設定針對連線所提供的時間間隔 (此連線要在傳輸引發例外狀況之前開啟)。 (繼承來源 Binding) |
ReceiveTimeout |
取得或設定連線中斷之前,可以維持非作用狀態的時間間隔 (在此期間未接收應用程式訊息)。 (繼承來源 Binding) |
Scheme |
取得自訂繫結所使用之傳輸的 URI 配置。 |
SendTimeout |
取得或設定針對寫入作業所提供的時間間隔 (此作業要在傳輸引發例外狀況之前完成)。 (繼承來源 Binding) |