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 和传输中介。
接下来是一个可选的安全绑定元素,它提供了授权、身份验证、保护和机密性之类的安全功能。 以下安全绑定元素由 Windows Communication Foundation (WCF) 提供:
接着是由下面的绑定元素指定的多个可选消息模式:
再下面是以下可选的传输升级/帮助器绑定元素:
再接下来是一个必需的消息编码绑定元素。 可以使用自己的传输或者使用以下消息编码绑定之一:
底层是一个必需的传输元素。 可以使用自己的传输或 Windows Communication Foundation (WCF) 提供的传输绑定元素之一:
下表总结了每层的选项。
层 | 选项 | 必须 |
---|---|---|
事务流 | TransactionFlowBindingElement | 否 |
可靠性 | ReliableSessionBindingElement | 否 |
安全性 | 对称、非对称、传输级 | 否 |
形状更改 | CompositeDuplexBindingElement | 否 |
传输升级 | SSL 流、Windows 流、对等解析程序 | 否 |
编码 | 文本、二进制、MTOM、自定义 | 是 |
Transport | 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) |