WSHttpBinding Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Representa un enlace interoperable que admite transacciones distribuidas y sesiones confiables y seguras.
public ref class WSHttpBinding : System::ServiceModel::WSHttpBindingBase
public class WSHttpBinding : System.ServiceModel.WSHttpBindingBase
type WSHttpBinding = class
inherit WSHttpBindingBase
Public Class WSHttpBinding
Inherits WSHttpBindingBase
- Herencia
- Derivado
Ejemplos
En el código de ejemplo siguiente se muestra cómo usar la clase WSHttpBinding.
using System;
using System.ServiceModel;
using System.Collections.Generic;
using System.IdentityModel.Tokens;
using System.Security.Cryptography.X509Certificates;
using System.ServiceModel.Channels;
using System.ServiceModel.Security;
using System.ServiceModel.Security.Tokens;
using System.Security.Permissions;
// 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);
}
public sealed class CustomBindingCreator
{
public static void snippetSecurity()
{
WSHttpBinding wsHttpBinding = new WSHttpBinding();
WSHttpSecurity whSecurity = wsHttpBinding.Security;
}
public static void snippetCreateBindingElements()
{
WSHttpBinding wsHttpBinding = new WSHttpBinding();
BindingElementCollection beCollection = wsHttpBinding.CreateBindingElements();
}
private void snippetCreateMessageSecurity()
{
WSHttpBinding wsHttpBinding = new WSHttpBinding();
// SecurityBindingElement sbe = wsHttpBinding
}
public static void snippetGetTransport()
{
WSHttpBinding wsHttpBinding = new WSHttpBinding();
// TransportBindingElement tbElement = wsHttpBinding.GetTransport();
}
public static void snippetAllowCookies()
{
WSHttpBinding wsHttpBinding = new WSHttpBinding();
wsHttpBinding.AllowCookies = true;
}
public static Binding GetBinding()
{
// securityMode is Message
// reliableSessionEnabled is true
WSHttpBinding binding = new WSHttpBinding(SecurityMode.Message, true);
binding.Security.Message.ClientCredentialType = MessageCredentialType.Windows;
WSHttpSecurity security = binding.Security;
return binding;
}
public static Binding GetBinding2()
{
// The security mode is set to Message.
WSHttpBinding binding = new WSHttpBinding(SecurityMode.Message);
binding.Security.Message.ClientCredentialType = MessageCredentialType.Windows;
return binding;
}
// This method creates a WSFederationHttpBinding.
public static WSFederationHttpBinding CreateWSFederationHttpBinding()
{
// Create an instance of the WSFederationHttpBinding
WSFederationHttpBinding b = new WSFederationHttpBinding();
// Set the security mode to Message
b.Security.Mode = WSFederationHttpSecurityMode.Message;
// Set the Algorithm Suite to Basic256Rsa15
b.Security.Message.AlgorithmSuite = SecurityAlgorithmSuite.Basic256Rsa15;
// Set NegotiateServiceCredential to true
b.Security.Message.NegotiateServiceCredential = true;
// Set IssuedKeyType to Symmetric
b.Security.Message.IssuedKeyType = SecurityKeyType.SymmetricKey;
// Set IssuedTokenType to SAML 1.1
b.Security.Message.IssuedTokenType = "http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#samlv1.1";
// Extract the STS certificate from the certificate store
X509Store store = new X509Store(StoreName.TrustedPeople, StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly);
X509Certificate2Collection certs = store.Certificates.Find(X509FindType.FindByThumbprint, "cd 54 88 85 0d 63 db ac 92 59 05 af ce b8 b1 de c3 67 9e 3f", false);
store.Close();
// Create an EndpointIdentity from the STS certificate
EndpointIdentity identity = EndpointIdentity.CreateX509CertificateIdentity(certs[0]);
// Set the IssuerAddress using the address of the STS and the previously created EndpointIdentity
b.Security.Message.IssuerAddress = new EndpointAddress(new Uri("http://localhost:8000/sts/x509"), identity);
// Set the IssuerBinding to a WSHttpBinding loaded from config
b.Security.Message.IssuerBinding = new WSHttpBinding("Issuer");
// Set the IssuerMetadataAddress using the metadata address of the STS and the previously created EndpointIdentity
b.Security.Message.IssuerMetadataAddress = new EndpointAddress(new Uri("http://localhost:8001/sts/mex"), identity);
// Create a ClaimTypeRequirement
ClaimTypeRequirement ctr = new ClaimTypeRequirement("http://example.org/claim/c1", false);
// Add the ClaimTypeRequirement to ClaimTypeRequirements
b.Security.Message.ClaimTypeRequirements.Add(ctr);
// Return the created binding
return b;
}
}
// 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;
}
// Host the service within this EXE console application.
public static void Main()
{
// Create a WSHttpBinding and set its property values.
WSHttpBinding binding = new WSHttpBinding();
binding.Name = "binding1";
binding.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard;
binding.Security.Mode = SecurityMode.Message;
binding.ReliableSession.Enabled = false;
binding.TransactionFlow = false;
//Specify a base address for the service endpoint.
Uri baseAddress = new Uri(@"http://localhost:8000/servicemodelsamples/service");
// Create a ServiceHost for the CalculatorService type
// and provide it with a base address.
ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress);
serviceHost.AddServiceEndpoint(typeof(ICalculator), binding, baseAddress);
// 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 ServiceHost to shutdown the service.
serviceHost.Close();
}
}
Imports System.ServiceModel
Imports System.Collections.Generic
Imports System.IdentityModel.Tokens
Imports System.Security.Cryptography.X509Certificates
Imports System.ServiceModel.Channels
Imports System.ServiceModel.Security
Imports System.ServiceModel.Security.Tokens
Imports System.Security.Permissions
' 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
Public NotInheritable Class CustomBindingCreator
Public Shared Sub snippetSecurity()
Dim wsHttpBinding As New WSHttpBinding()
Dim whSecurity As WSHttpSecurity = wsHttpBinding.Security
End Sub
Public Shared Sub snippetCreateBindingElements()
Dim wsHttpBinding As New WSHttpBinding()
Dim beCollection As BindingElementCollection = wsHttpBinding.CreateBindingElements()
End Sub
Private Sub snippetCreateMessageSecurity()
Dim wsHttpBinding As New WSHttpBinding()
End Sub
Public Shared Sub snippetGetTransport()
Dim wsHttpBinding As New WSHttpBinding()
End Sub
Public Shared Sub snippetAllowCookies()
Dim wsHttpBinding As New WSHttpBinding()
wsHttpBinding.AllowCookies = True
End Sub
Public Shared Function GetBinding() As Binding
' securityMode is Message
' reliableSessionEnabled is true
Dim binding As New WSHttpBinding(SecurityMode.Message, True)
binding.Security.Message.ClientCredentialType = MessageCredentialType.Windows
Dim security As WSHttpSecurity = binding.Security
Return binding
End Function
Public Shared Function GetBinding2() As Binding
' The security mode is set to Message.
Dim binding As New WSHttpBinding(SecurityMode.Message)
binding.Security.Message.ClientCredentialType = MessageCredentialType.Windows
Return binding
End Function
' This method creates a WSFederationHttpBinding.
Public Shared Function CreateWSFederationHttpBinding() As WSFederationHttpBinding
' Create an instance of the WSFederationHttpBinding
Dim b As New WSFederationHttpBinding()
' Set the security mode to Message
b.Security.Mode = WSFederationHttpSecurityMode.Message
' Set the Algorithm Suite to Basic256Rsa15
b.Security.Message.AlgorithmSuite = SecurityAlgorithmSuite.Basic256Rsa15
' Set NegotiateServiceCredential to true
b.Security.Message.NegotiateServiceCredential = True
' Set IssuedKeyType to Symmetric
b.Security.Message.IssuedKeyType = SecurityKeyType.SymmetricKey
' Set IssuedTokenType to SAML 1.1
b.Security.Message.IssuedTokenType = "http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#samlv1.1"
' Extract the STS certificate from the certificate store
Dim store As New X509Store(StoreName.TrustedPeople, StoreLocation.CurrentUser)
store.Open(OpenFlags.ReadOnly)
Dim certs As X509Certificate2Collection = store.Certificates.Find(X509FindType.FindByThumbprint, "cd 54 88 85 0d 63 db ac 92 59 05 af ce b8 b1 de c3 67 9e 3f", False)
store.Close()
' Create an EndpointIdentity from the STS certificate
Dim identity As EndpointIdentity = EndpointIdentity.CreateX509CertificateIdentity(certs(0))
' Set the IssuerAddress using the address of the STS and the previously created EndpointIdentity
b.Security.Message.IssuerAddress = New EndpointAddress(New Uri("http://localhost:8000/sts/x509"), identity)
' Set the IssuerBinding to a WSHttpBinding loaded from config
b.Security.Message.IssuerBinding = New WSHttpBinding("Issuer")
' Set the IssuerMetadataAddress using the metadata address of the STS and the previously created EndpointIdentity
b.Security.Message.IssuerMetadataAddress = New EndpointAddress(New Uri("http://localhost:8001/sts/mex"), identity)
' Create a ClaimTypeRequirement
Dim ctr As New ClaimTypeRequirement("http://example.org/claim/c1", False)
' Add the ClaimTypeRequirement to ClaimTypeRequirements
b.Security.Message.ClaimTypeRequirements.Add(ctr)
' Return the created binding
Return b
End Function
End Class
' 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
' Host the service within this EXE console application.
Public Shared Sub Main()
' Create a WSHttpBinding and set its property values.
Dim binding As New WSHttpBinding()
With binding
.Name = "binding1"
.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard
.Security.Mode = SecurityMode.Message
.ReliableSession.Enabled = False
.TransactionFlow = False
End With
'Specify a base address for the service endpoint.
Dim baseAddress As New Uri("http://localhost:8000/servicemodelsamples/service")
' Create a ServiceHost for the CalculatorService type
' and provide it with a base address.
Dim serviceHost As New ServiceHost(GetType(CalculatorService), baseAddress)
serviceHost.AddServiceEndpoint(GetType(ICalculator), binding, baseAddress)
' 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 ServiceHost to shutdown the service.
serviceHost.Close()
End Sub
End Class
Comentarios
El WSHttpBinding es similar al BasicHttpBinding, pero proporciona más características de servicio web. Usa el transporte HTTP y proporciona seguridad de mensajes, como BasicHttpBinding, pero también proporciona transacciones, mensajería confiable y direccionamiento WS, habilitado de forma predeterminada o disponible a través de una única configuración de control.
Constructores
WSHttpBinding() |
Inicializa una nueva instancia de la clase WSHttpBinding. |
WSHttpBinding(SecurityMode, Boolean) |
Inicializa una nueva instancia de la clase WSHttpBinding con un tipo de seguridad especificado utilizado por el enlace y un valor que indica si está habilitada una sesión confiable. |
WSHttpBinding(SecurityMode) |
Inicializa una nueva instancia de la clase WSHttpBinding con un tipo de seguridad especificado utilizado por el enlace. |
WSHttpBinding(String) |
Inicializa una nueva instancia de la clase WSHttpBinding con un enlace especificado por su nombre de configuración. |
Propiedades
AllowCookies |
Obtiene o establece un valor que indica si el cliente WCF almacenará y volverá a enviar automáticamente las cookies enviadas por un único servicio web. |
BypassProxyOnLocal |
Obtiene o establece un valor que indica si se va a omitir el servidor proxy para las direcciones locales. (Heredado de WSHttpBindingBase) |
CloseTimeout |
Obtiene o establece el intervalo de tiempo proporcionado para que una conexión se cierre antes de que el transporte genere una excepción. (Heredado de Binding) |
EnvelopeVersion |
Obtiene la versión de SOAP que se usa para los mensajes procesados por este enlace. (Heredado de WSHttpBindingBase) |
HostNameComparisonMode |
Obtiene o establece un valor que indica si el nombre de host se usa para llegar al servicio al buscar coincidencias con el URI. (Heredado de WSHttpBindingBase) |
MaxBufferPoolSize |
Obtiene o establece la cantidad máxima de memoria asignada, en bytes, para el administrador de búferes que administra los búferes necesarios para los puntos de conexión que usan este enlace. (Heredado de WSHttpBindingBase) |
MaxReceivedMessageSize |
Obtiene o establece el tamaño máximo, en bytes, de un mensaje que el enlace puede procesar. (Heredado de WSHttpBindingBase) |
MessageEncoding |
Obtiene o establece si se usa MTOM o Text/XML para codificar mensajes SOAP. (Heredado de WSHttpBindingBase) |
MessageVersion |
Obtiene la versión del mensaje utilizada por clientes y servicios configurados con el enlace. (Heredado de Binding) |
Name |
Obtiene o establece el nombre del enlace. (Heredado de Binding) |
Namespace |
Obtiene o establece el espacio de nombres XML del enlace. (Heredado de Binding) |
OpenTimeout |
Obtiene o establece el intervalo de tiempo proporcionado para que se abra una conexión antes de que el transporte genere una excepción. (Heredado de Binding) |
ProxyAddress |
Obtiene o establece la dirección URI del proxy HTTP. (Heredado de WSHttpBindingBase) |
ReaderQuotas |
Obtiene o establece restricciones sobre la complejidad de los mensajes SOAP que pueden procesar los puntos de conexión configurados con este enlace. (Heredado de WSHttpBindingBase) |
ReceiveTimeout |
Obtiene o establece el intervalo de tiempo que una conexión puede permanecer inactiva, durante la cual no se recibe ningún mensaje de aplicación, antes de quitarla. (Heredado de Binding) |
ReliableSession |
Obtiene un objeto que proporciona acceso práctico a las propiedades de un elemento de enlace de sesión confiable que está disponible cuando se usa uno de los enlaces proporcionados por el sistema. (Heredado de WSHttpBindingBase) |
Scheme |
Obtiene el esquema de transporte de URI para los canales y agentes de escucha configurados con este enlace. (Heredado de WSHttpBindingBase) |
Security |
Obtiene la configuración de seguridad usada con este enlace. |
SendTimeout |
Obtiene o establece el intervalo de tiempo proporcionado para que se complete una operación de escritura antes de que el transporte genere una excepción. (Heredado de Binding) |
TextEncoding |
Obtiene o establece la codificación de caracteres que se usa para el texto del mensaje. (Heredado de WSHttpBindingBase) |
TransactionFlow |
Obtiene o establece un valor que indica si este enlace debe admitir el flujo de WS-Transactions. (Heredado de WSHttpBindingBase) |
UseDefaultWebProxy |
Obtiene o establece un valor que indica si se debe usar el proxy HTTP configurado automáticamente del sistema, si está disponible. (Heredado de WSHttpBindingBase) |
Métodos
BuildChannelFactory<TChannel>(BindingParameterCollection) |
Compila la pila de generador de canales en el cliente que crea un tipo de canal especificado y que satisface las características especificadas por una colección de parámetros de enlace. |
BuildChannelFactory<TChannel>(BindingParameterCollection) |
Compila la pila de generador de canales en el cliente que crea un tipo de canal especificado y que satisface las características especificadas por una colección de parámetros de enlace. (Heredado de Binding) |
BuildChannelFactory<TChannel>(Object[]) |
Compila la pila del generador de canales en el cliente que crea un tipo de canal especificado y que satisface las características especificadas por una matriz de objetos. (Heredado de Binding) |
BuildChannelListener<TChannel>(BindingParameterCollection) |
Compila el agente de escucha de canal en el servicio que acepta un tipo de canal especificado y que satisface las características especificadas por una colección de parámetros de enlace. (Heredado de Binding) |
BuildChannelListener<TChannel>(Object[]) |
Compila el agente de escucha del canal en el servicio que acepta un tipo de canal especificado y que satisface las características especificadas. (Heredado de Binding) |
BuildChannelListener<TChannel>(Uri, BindingParameterCollection) |
Compila el agente de escucha del canal en el servicio que acepta un tipo de canal especificado y que satisface las características especificadas. (Heredado de Binding) |
BuildChannelListener<TChannel>(Uri, Object[]) |
Compila el agente de escucha del canal en el servicio que acepta un tipo de canal especificado y que satisface las características especificadas. (Heredado de Binding) |
BuildChannelListener<TChannel>(Uri, String, BindingParameterCollection) |
Compila el agente de escucha del canal en el servicio que acepta un tipo de canal especificado y que satisface las características especificadas. (Heredado de Binding) |
BuildChannelListener<TChannel>(Uri, String, ListenUriMode, BindingParameterCollection) |
Compila el agente de escucha del canal en el servicio que acepta un tipo de canal especificado y que satisface las características especificadas. (Heredado de Binding) |
BuildChannelListener<TChannel>(Uri, String, ListenUriMode, Object[]) |
Compila el agente de escucha del canal en el servicio que acepta un tipo de canal especificado y que satisface las características especificadas. (Heredado de Binding) |
BuildChannelListener<TChannel>(Uri, String, Object[]) |
Compila el agente de escucha del canal en el servicio que acepta un tipo de canal especificado y que satisface las características especificadas. (Heredado de Binding) |
CanBuildChannelFactory<TChannel>(BindingParameterCollection) |
Devuelve un valor que indica si el enlace actual puede crear una pila de generador de canales en el cliente que satisfaga la colección de parámetros de enlace especificados. (Heredado de Binding) |
CanBuildChannelFactory<TChannel>(Object[]) |
Devuelve un valor que indica si el enlace actual puede crear una pila de generador de canales en el cliente que cumpla los requisitos especificados por una matriz de objetos. (Heredado de Binding) |
CanBuildChannelListener<TChannel>(BindingParameterCollection) |
Devuelve un valor que indica si el enlace actual puede crear una pila del agente de escucha de canal en el servicio que satisface la colección de parámetros de enlace especificados. (Heredado de Binding) |
CanBuildChannelListener<TChannel>(Object[]) |
Devuelve un valor que indica si el enlace actual puede crear una pila del agente de escucha de canal en el servicio que cumpla los criterios especificados en una matriz de objetos. (Heredado de Binding) |
CreateBindingElements() |
Devuelve una colección ordenada de elementos de enlace contenidos en el enlace actual. |
CreateMessageSecurity() |
Devuelve el elemento de enlace de seguridad del enlace actual. |
Equals(Object) |
Determina si el objeto especificado es igual al objeto actual. (Heredado de Object) |
GetHashCode() |
Actúa como función hash predeterminada. (Heredado de Object) |
GetProperty<T>(BindingParameterCollection) |
Devuelve un objeto con tipo solicitado, si está presente, de la capa adecuada en la pila de enlace. (Heredado de Binding) |
GetTransport() |
Devuelve el elemento de enlace de transporte del enlace actual. |
GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
MemberwiseClone() |
Crea una copia superficial del Objectactual. (Heredado de Object) |
ShouldSerializeName() |
Devuelve si se debe serializar el nombre del enlace. (Heredado de Binding) |
ShouldSerializeNamespace() |
Devuelve si se debe serializar el espacio de nombres del enlace. (Heredado de Binding) |
ShouldSerializeReaderQuotas() |
Devuelve un valor que indica si la propiedad ReaderQuotas ha cambiado de su valor predeterminado y se debe serializar. (Heredado de WSHttpBindingBase) |
ShouldSerializeReliableSession() |
Devuelve un valor que indica si la propiedad ReliableSession ha cambiado de su valor predeterminado y se debe serializar. (Heredado de WSHttpBindingBase) |
ShouldSerializeSecurity() |
Devuelve un valor que indica si la propiedad Security ha cambiado de su valor predeterminado y se debe serializar. |
ShouldSerializeTextEncoding() |
Devuelve un valor que indica si la propiedad TextEncoding ha cambiado de su valor predeterminado y se debe serializar. (Heredado de WSHttpBindingBase) |
ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |
Implementaciones de interfaz explícitas
IBindingRuntimePreferences.ReceiveSynchronously |
Obtiene un valor que indica si las solicitudes entrantes se controlan de forma sincrónica o asincrónica. (Heredado de WSHttpBindingBase) |