WSHttpBindingBase 类
定义
提供一个基类,该基类具有 WSHttpBinding 和 WSFederationHttpBinding 共有的成员。Provides the base class with members common to the WSHttpBinding and the WSFederationHttpBinding.
public ref class WSHttpBindingBase abstract : System::ServiceModel::Channels::Binding
public ref class WSHttpBindingBase abstract : System::ServiceModel::Channels::Binding, System::ServiceModel::Channels::IBindingRuntimePreferences
public abstract class WSHttpBindingBase : System.ServiceModel.Channels.Binding
public abstract class WSHttpBindingBase : System.ServiceModel.Channels.Binding, System.ServiceModel.Channels.IBindingRuntimePreferences
type WSHttpBindingBase = class
inherit Binding
type WSHttpBindingBase = class
inherit Binding
interface IBindingRuntimePreferences
Public MustInherit Class WSHttpBindingBase
Inherits Binding
Public MustInherit Class WSHttpBindingBase
Inherits Binding
Implements IBindingRuntimePreferences
- 继承
- 派生
- 实现
示例
下面的示例演示如何使用 WSHttpBindingBase 类与派生类、WSHttpBinding 以及 WSFederationHttpBinding 所提供的功能。The following example shows how to use the functionality provided by the WSHttpBindingBase class with the derived classes, WSHttpBinding and WSFederationHttpBinding.
// Define a service contract for the calculator.
[ServiceContract()]
public interface ICalculator
{
[OperationContract(IsOneWay = false)]
double Add(double n1, double n2);
[OperationContract(IsOneWay = false)]
double Subtract(double n1, double n2);
[OperationContract(IsOneWay = false)]
double Multiply(double n1, double n2);
[OperationContract(IsOneWay = false)]
double Divide(double n1, double n2);
}
// Service class which implements the service contract.
public class CalculatorService : ICalculator
{
public double Add(double n1, double n2)
{
double result = n1 + n2;
return result;
}
public double Subtract(double n1, double n2)
{
double result = n1 - n2;
return result;
}
public double Multiply(double n1, double n2)
{
double result = n1 * n2;
return result;
}
public double Divide(double n1, double n2)
{
double result = n1 / n2;
return result;
}
// Create and configure bindings within this EXE console application.
public static void Main()
{
// Create a WSHttpBinding
WSHttpBinding binding1 = new WSHttpBinding();
binding1.BypassProxyOnLocal = true;
EnvelopeVersion envelopeVersion =
binding1.EnvelopeVersion;
HostNameComparisonMode hostnameComparisonMode =
binding1.HostNameComparisonMode;
long maxBufferPoolSize =
binding1.MaxBufferPoolSize;
long maxReceivedMessageSize =
binding1.MaxReceivedMessageSize;
WSMessageEncoding messageEncoding =
binding1.MessageEncoding;
Uri proxyAddress =
binding1.ProxyAddress;
XmlDictionaryReaderQuotas readerQuotas =
binding1.ReaderQuotas;
OptionalReliableSession reliableSession =
binding1.ReliableSession;
string scheme = binding1.Scheme;
Encoding textEncoding =
binding1.TextEncoding;
bool transactionFlow =
binding1.TransactionFlow;
bool useDefaultWebProxy =
binding1.UseDefaultWebProxy;
BindingElementCollection bindingElements =
binding1.CreateBindingElements();
// Set WSHttpBinding binding property values
binding1.Name = "Binding1";
binding1.HostNameComparisonMode =
HostNameComparisonMode.StrongWildcard;
binding1.Security.Mode = SecurityMode.Message;
binding1.ReliableSession.Enabled = false;
binding1.TransactionFlow = false;
// binding1.Security.Message.DefaultProtectionLevel = System.Net.Security.ProtectionLevel.EncryptAndSign;
// Enumerate properties of the binding1.
Console.WriteLine("WSHttpBinding binding1 properties:");
Console.WriteLine(" - name:\t\t\t{0}", binding1.Name);
Console.WriteLine(" - hostname comparison:\t{0}", binding1.HostNameComparisonMode);
Console.WriteLine(" - security mode:\t\t{0}", binding1.Security.Mode);
Console.WriteLine(" - RM enabled:\t\t{0}", binding1.ReliableSession.Enabled);
Console.WriteLine(" - transaction flow:\t{0}", binding1.TransactionFlow);
//Console.WriteLine(" - message security:\t{0}", binding1.Security.Message.DefaultProtectionLevel);
Console.WriteLine(" - transport scheme:\t{0}", binding1.Scheme);
Console.WriteLine(" - max message size:\t{0}", binding1.MaxReceivedMessageSize);
Console.WriteLine(" - default text encoding:\t{0}", binding1.TextEncoding);
Console.WriteLine();
// Create a WSFederationBinding with a message security mode
// and with a reliable session enabled.
WSFederationHttpBinding binding3 = new WSFederationHttpBinding(WSFederationHttpSecurityMode.Message, true);
// Enumerate properties of the binding2.
Console.WriteLine("WSFederationBinding binding3 properties:");
Console.WriteLine(" - security mode:\t\t{0}", binding3.Security.Mode);
Console.WriteLine(" - RM enabled:\t\t{0}", binding3.ReliableSession.Enabled);
Console.WriteLine();
Console.WriteLine("Press <ENTER> to terminate.");
Console.ReadLine();
}
static void SnippetReceiveSynchronously ()
{
WSHttpBinding binding = new WSHttpBinding();
IBindingRuntimePreferences s =
binding.GetProperty<IBindingRuntimePreferences>
(new BindingParameterCollection());
bool receiveSynchronously = s.ReceiveSynchronously;
}
}
' Define a service contract for the calculator.
<ServiceContract()> _
Public Interface ICalculator
<OperationContract(IsOneWay := False)> _
Function Add(ByVal n1 As Double, ByVal n2 As Double) As Double
<OperationContract(IsOneWay := False)> _
Function Subtract(ByVal n1 As Double, ByVal n2 As Double) As Double
<OperationContract(IsOneWay := False)> _
Function Multiply(ByVal n1 As Double, ByVal n2 As Double) As Double
<OperationContract(IsOneWay := False)> _
Function Divide(ByVal n1 As Double, ByVal n2 As Double) As Double
End Interface
' Service class which implements the service contract.
Public Class CalculatorService
Implements ICalculator
Public Function Add(ByVal n1 As Double, ByVal n2 As Double) As Double Implements ICalculator.Add
Dim result = n1 + n2
Return result
End Function
Public Function Subtract(ByVal n1 As Double, ByVal n2 As Double) As Double Implements ICalculator.Subtract
Dim result = n1 - n2
Return result
End Function
Public Function Multiply(ByVal n1 As Double, ByVal n2 As Double) As Double Implements ICalculator.Multiply
Dim result = n1 * n2
Return result
End Function
Public Function Divide(ByVal n1 As Double, ByVal n2 As Double) As Double Implements ICalculator.Divide
Dim result = n1 / n2
Return result
End Function
' Create and configure bindings within this EXE console application.
Public Shared Sub Main()
' Create a WSHttpBinding
Dim binding1 As New WSHttpBinding()
binding1.BypassProxyOnLocal = True
Dim envelopeVersion As EnvelopeVersion = binding1.EnvelopeVersion
Dim hostnameComparisonMode As HostNameComparisonMode = binding1.HostNameComparisonMode
Dim maxBufferPoolSize = binding1.MaxBufferPoolSize
Dim maxReceivedMessageSize = binding1.MaxReceivedMessageSize
Dim messageEncoding As WSMessageEncoding = binding1.MessageEncoding
Dim proxyAddress As Uri = binding1.ProxyAddress
Dim readerQuotas As XmlDictionaryReaderQuotas = binding1.ReaderQuotas
Dim reliableSession As OptionalReliableSession = binding1.ReliableSession
Dim scheme = binding1.Scheme
Dim textEncoding = binding1.TextEncoding
Dim transactionFlow = binding1.TransactionFlow
Dim useDefaultWebProxy = binding1.UseDefaultWebProxy
Dim bindingElements As BindingElementCollection = binding1.CreateBindingElements()
' Set WSHttpBinding binding property values
binding1.Name = "Binding1"
binding1.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard
binding1.Security.Mode = SecurityMode.Message
binding1.ReliableSession.Enabled = False
binding1.TransactionFlow = False
' binding1.Security.Message.DefaultProtectionLevel = System.Net.Security.ProtectionLevel.EncryptAndSign;
' Enumerate properties of the binding1.
Console.WriteLine("WSHttpBinding binding1 properties:")
Console.WriteLine(" - name:" & Constants.vbTab + Constants.vbTab + Constants.vbTab & "{0}", binding1.Name)
Console.WriteLine(" - hostname comparison:" & Constants.vbTab & "{0}", binding1.HostNameComparisonMode)
Console.WriteLine(" - security mode:" & Constants.vbTab + Constants.vbTab & "{0}", binding1.Security.Mode)
Console.WriteLine(" - RM enabled:" & Constants.vbTab + Constants.vbTab & "{0}", binding1.ReliableSession.Enabled)
Console.WriteLine(" - transaction flow:" & Constants.vbTab & "{0}", binding1.TransactionFlow)
'Console.WriteLine(" - message security:\t{0}", binding1.Security.Message.DefaultProtectionLevel);
Console.WriteLine(" - transport scheme:" & Constants.vbTab & "{0}", binding1.Scheme)
Console.WriteLine(" - max message size:" & Constants.vbTab & "{0}", binding1.MaxReceivedMessageSize)
Console.WriteLine(" - default text encoding:" & Constants.vbTab & "{0}", binding1.TextEncoding)
Console.WriteLine()
' Create a WSFederationBinding with a message security mode
' and with a reliable session enabled.
Dim binding3 As New WSFederationHttpBinding(WSFederationHttpSecurityMode.Message, True)
' Enumerate properties of the binding2.
Console.WriteLine("WSFederationBinding binding3 properties:")
Console.WriteLine(" - security mode:" & Constants.vbTab + Constants.vbTab & "{0}", binding3.Security.Mode)
Console.WriteLine(" - RM enabled:" & Constants.vbTab + Constants.vbTab & "{0}", binding3.ReliableSession.Enabled)
Console.WriteLine()
Console.WriteLine("Press <ENTER> to terminate.")
Console.ReadLine()
End Sub
Private Shared Sub SnippetReceiveSynchronously()
Dim binding As New WSHttpBinding()
Dim s As IBindingRuntimePreferences = binding.GetProperty(Of IBindingRuntimePreferences) (New BindingParameterCollection())
Dim receiveSynchronously = s.ReceiveSynchronously
End Sub
End Class
注解
WSHttpBindingBase 为绑定提供用于配置安全、可靠和可互操作的 Web 服务的一些基本功能,例如,由适合于非双工服务协定的 WSHttpBinding(更具体来说,是支持 WS 联合协议的可靠、可互操作的 WSFederationHttpBinding)实现的功能。The WSHttpBindingBase provides some basic functionality for the bindings used to configure secure, reliable, and interoperable Web services, such as that implemented by the WSHttpBinding for non-duplex service contracts, and more particularly, for the secure and interoperable WSFederationHttpBinding that supports the WS-Federation protocol.
默认情况下,它会生成一个运行时堆栈,该堆栈使用 WS 安全性来实现消息安全性和身份验证,使用 HTTP 来进行消息传递,并且使用文本/XML 消息编码功能。By default it generates a run-time stack that uses WS-Security for message security and authentication, HTTP for message delivery, and a Text/XML message encoding. 该堆栈经过配置后还可以使用 WS-ReliableMessaging 以保证可靠性。It can be configured to also use WS-ReliableMessaging for reliability.
通过使用可选的 reliableSessionEnabled 参数,可以配置 WS-ReliableMessaging 的用法。The use of WS-ReliableMessaging is configurable using the optional reliableSessionEnabled parameter.
构造函数
| WSHttpBindingBase() |
初始化 WSHttpBindingBase 类的新实例。Initializes a new instance of the WSHttpBindingBase class. |
| WSHttpBindingBase(Boolean) |
用一个值初始化 WSHttpBindingBase 类的新实例,该值指定是否已启用可靠会话。Initializes a new instance of the WSHttpBindingBase class with a value that indicates whether a reliable session is enabled. |
属性
| BypassProxyOnLocal |
获取或设置一个值,该值指示是否跳过代理服务器而使用本地地址。Gets or sets a value that indicates whether to bypass the proxy server for local addresses. |
| CloseTimeout |
获取或设置在传输引发异常之前可用于关闭连接的时间间隔。Gets or sets the interval of time provided for a connection to close before the transport raises an exception. (继承自 Binding) |
| EnvelopeVersion |
获取此绑定处理的消息将要使用的 SOAP 版本。Gets the version of SOAP that is used for messages that are processed by this binding. |
| HostNameComparisonMode |
获取或设置一个值,该值指示在对 URI 进行匹配时,是否使用主机名来访问服务。Gets or sets a value that indicates whether the hostname is used to reach the service when matching the URI. |
| MaxBufferPoolSize |
获取或设置可为缓冲区管理器分配的最大内存量(以字节为单位),该管理器管理使用此绑定的终结点所需的缓冲区。Gets or sets the maximum amount of memory allocated, in bytes, for the buffer manager that manages the buffers required by endpoints using this binding. |
| MaxReceivedMessageSize |
获取或设置绑定可处理的消息的最大大小(以字节为单位)。Gets or sets the maximum size, in bytes, for a message that can be processed by the binding. |
| MessageEncoding |
获取或设置一个值,该值指示是使用 MTOM 还是文本/XML 对 SOAP 消息进行编码。Gets or sets whether MTOM or Text/XML is used to encode SOAP messages. |
| MessageVersion |
获取由绑定所配置的客户端和服务使用的消息版本。Gets the message version used by clients and services configured with the binding. (继承自 Binding) |
| Name |
获取或设置绑定的名称。Gets or sets the name of the binding. (继承自 Binding) |
| Namespace |
获取或设置绑定的 XML 命名空间。Gets or sets the XML namespace of the binding. (继承自 Binding) |
| OpenTimeout |
获取或设置在传输引发异常之前可用于打开连接的时间间隔。Gets or sets the interval of time provided for a connection to open before the transport raises an exception. (继承自 Binding) |
| ProxyAddress |
获取或设置 HTTP 代理的 URI 地址。Gets or sets the URI address of the HTTP proxy. |
| ReaderQuotas |
获取或设置可由配置了此绑定的终结点处理的 SOAP 消息的复杂性约束。Gets or sets constraints on the complexity of SOAP messages that can be processed by endpoints configured with this binding. |
| ReceiveTimeout |
获取或设置连接在撤消之前保持非活动状态的最大时间间隔,在此时间间隔内未接收任何应用程序消息。Gets or sets the interval of time that a connection can remain inactive, during which no application messages are received, before it is dropped. (继承自 Binding) |
| ReliableSession |
获取一个对象,当使用系统提供的一个绑定时,该对象可提供对可用的可靠会话绑定元素属性的便捷访问。Gets an object that provides convenient access to the properties of a reliable session binding element that are available when using one of the system-provided bindings. |
| Scheme |
获取用此绑定配置的通道和侦听器的 URI 传输方案。Gets the URI transport scheme for the channels and listeners that are configured with this binding. |
| SendTimeout |
获取或设置在传输引发异常之前可用于完成写入操作的时间间隔。Gets or sets the interval of time provided for a write operation to complete before the transport raises an exception. (继承自 Binding) |
| TextEncoding |
获取或设置用于消息文本的字符编码。Gets or sets the character encoding that is used for the message text. |
| TransactionFlow |
获取或设置一个值,该值指示此绑定是否应支持流动 WS-Transactions。Gets or sets a value that indicates whether this binding should support flowing WS-Transactions. |
| UseDefaultWebProxy |
获取或设置一个值,该值指示是否应使用系统的自动配置 HTTP 代理(如果可用)。Gets or sets a value that indicates whether the auto-configured HTTP proxy of the system should be used, if available. |
方法
| BuildChannelFactory<TChannel>(BindingParameterCollection) |
在客户端上生成通道工厂堆栈,此通道工厂堆栈创建具有指定类型的通道并满足绑定参数集合所指定的功能。Builds the channel factory stack on the client that creates a specified type of channel and that satisfies the features specified by a collection of binding parameters. (继承自 Binding) |
| BuildChannelFactory<TChannel>(Object[]) |
在客户端上生成通道工厂堆栈,该通道工厂堆栈创建具有指定类型的通道并满足对象数组所指定的功能。Builds the channel factory stack on the client that creates a specified type of channel and that satisfies the features specified by an object array. (继承自 Binding) |
| BuildChannelListener<TChannel>(BindingParameterCollection) |
在服务上生成通道侦听器,该通道侦听器接受具有指定类型的通道并满足绑定参数集合所指定的功能。Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified by a collection of binding parameters. (继承自 Binding) |
| BuildChannelListener<TChannel>(Object[]) |
在服务上生成通道侦听器,该通道侦听器接受具有指定类型的通道并满足所指定的功能。Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified. (继承自 Binding) |
| BuildChannelListener<TChannel>(Uri, BindingParameterCollection) |
在服务上生成通道侦听器,该通道侦听器接受具有指定类型的通道并满足所指定的功能。Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified. (继承自 Binding) |
| BuildChannelListener<TChannel>(Uri, Object[]) |
在服务上生成通道侦听器,该通道侦听器接受具有指定类型的通道并满足所指定的功能。Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified. (继承自 Binding) |
| BuildChannelListener<TChannel>(Uri, String, BindingParameterCollection) |
在服务上生成通道侦听器,该通道侦听器接受具有指定类型的通道并满足所指定的功能。Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified. (继承自 Binding) |
| BuildChannelListener<TChannel>(Uri, String, ListenUriMode, BindingParameterCollection) |
在服务上生成通道侦听器,该通道侦听器接受具有指定类型的通道并满足所指定的功能。Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified. (继承自 Binding) |
| BuildChannelListener<TChannel>(Uri, String, ListenUriMode, Object[]) |
在服务上生成通道侦听器,该通道侦听器接受具有指定类型的通道并满足所指定的功能。Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified. (继承自 Binding) |
| BuildChannelListener<TChannel>(Uri, String, Object[]) |
在服务上生成通道侦听器,该通道侦听器接受具有指定类型的通道并满足所指定的功能。Builds the channel listener on the service that accepts a specified type of channel and that satisfies the features specified. (继承自 Binding) |
| CanBuildChannelFactory<TChannel>(BindingParameterCollection) |
返回一个值,该值指示当前绑定是否可以在客户端上生成满足指定绑定参数集合的通道工厂堆栈。Returns a value that indicates whether the current binding can build a channel factory stack on the client that satisfies the collection of binding parameters specified. (继承自 Binding) |
| CanBuildChannelFactory<TChannel>(Object[]) |
返回一个值,该值指示当前绑定是否可以在客户端上生成满足对象数组所指定的需求的通道工厂堆栈。Returns a value that indicates whether the current binding can build a channel factory stack on the client that satisfies the requirements specified by an object array. (继承自 Binding) |
| CanBuildChannelListener<TChannel>(BindingParameterCollection) |
返回一个值,该值指示当前绑定是否可以在服务上生成满足指定绑定参数集合的通道侦听器堆栈。Returns a value that indicates whether the current binding can build a channel listener stack on the service that satisfies the collection of binding parameters specified. (继承自 Binding) |
| CanBuildChannelListener<TChannel>(Object[]) |
返回一个值,该值指示当前绑定是否可以在服务上生成满足对象数组所指定的条件的通道侦听器堆栈。Returns a value that indicates whether the current binding can build a channel listener stack on the service that satisfies the criteria specified in an array of objects. (继承自 Binding) |
| CreateBindingElements() |
返回一个包含在当前绑定中的已排序的绑定元素集合。Returns an ordered collection of binding elements contained in the current binding. |
| CreateMessageSecurity() |
在派生类中实现时,从当前绑定返回 SecurityBindingElement。When implemented in a derived class, returns the SecurityBindingElement from the current binding. |
| Equals(Object) |
确定指定对象是否等于当前对象。Determines whether the specified object is equal to the current object. (继承自 Object) |
| GetHashCode() |
作为默认哈希函数。Serves as the default hash function. (继承自 Object) |
| GetProperty<T>(BindingParameterCollection) |
从绑定堆栈的适当层返回所请求的类型化对象(如果存在)。Returns a typed object requested, if present, from the appropriate layer in the binding stack. (继承自 Binding) |
| GetTransport() |
在派生类中实现时,从当前绑定返回传输绑定元素。When implemented in a derived class, returns the transport binding element from the current binding. |
| GetType() |
获取当前实例的 Type。Gets the Type of the current instance. (继承自 Object) |
| MemberwiseClone() |
创建当前 Object 的浅表副本。Creates a shallow copy of the current Object. (继承自 Object) |
| ShouldSerializeName() |
返回是否应序列化绑定名称。Returns whether the name of the binding should be serialized. (继承自 Binding) |
| ShouldSerializeNamespace() |
返回是否应序列化绑定命名空间。Returns whether the namespace of the binding should be serialized. (继承自 Binding) |
| ShouldSerializeReaderQuotas() |
返回一个值,该值指示 ReaderQuotas 属性是否已更改,不再是默认值且应对其进行序列化。Returns a value that indicates whether the ReaderQuotas property has changed from its default value and should be serialized. |
| ShouldSerializeReliableSession() |
返回一个值,该值指示 ReliableSession 属性是否已更改,不再是默认值且应对其进行序列化。Returns a value that indicates whether the ReliableSession property has changed from its default value and should be serialized. |
| ShouldSerializeTextEncoding() |
返回一个值,该值指示 TextEncoding 属性是否已更改,不再是默认值且应对其进行序列化。Returns a value that indicates whether the TextEncoding property has changed from its default value and should be serialized. |
| ToString() |
返回表示当前对象的字符串。Returns a string that represents the current object. (继承自 Object) |
显式接口实现
| IBindingRuntimePreferences.ReceiveSynchronously |
获取一个值,该值指示是同步处理传入请求还是异步处理传入请求。Gets a value that indicates whether incoming requests are handled synchronously or asynchronously. |