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 siguiente código de muestra, se muestra cómo utilizar 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
La clase WSHttpBinding es similar a la clase BasicHttpBinding pero proporciona más características de servicios Web. Utiliza el transporte HTTP y proporciona seguridad para mensajes, como BasicHttpBinding, pero también proporciona transacciones, mensajería confiable y WS-Addressing, habilitada de forma predeterminada o disponible mediante un valor de control único.
Constructores
WSHttpBinding() |
Inicializa una nueva instancia de la clase WSHttpBinding. |
WSHttpBinding(SecurityMode) |
Inicializa una nueva instancia de la clase WSHttpBinding con un tipo de seguridad especificado utilizado por el enlace. |
WSHttpBinding(SecurityMode, Boolean) |
Inicializa una nueva instancia de la clase WSHttpBinding con los parámetros especificados: un tipo de seguridad utilizado por el enlace y un valor que indica si una sesión confiable está habilitada. |
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 solo servicio web. |
BypassProxyOnLocal |
Obtiene o establece un valor que indica si debe omitirse 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 utiliza para los mensajes procesados por este enlace. (Heredado de WSHttpBindingBase) |
HostNameComparisonMode |
Obtiene o establece un valor que indica si el nombre del host se usa para alcanzar el servicio al coincidir con el URI. (Heredado de WSHttpBindingBase) |
MaxBufferPoolSize |
Obtiene o establece la cantidad de memoria máxima que se asigna, en bytes, para el administrador del búfer que administra los búferes requeridos por los extremos que usan este enlace. (Heredado de WSHttpBindingBase) |
MaxReceivedMessageSize |
Obtiene o establece el tamaño máximo, en bytes, para un mensaje que puede ser procesado por el enlace. (Heredado de WSHttpBindingBase) |
MessageEncoding |
Obtiene o establece si se usa MTOM o texto/XML para codificar los mensajes SOAP. (Heredado de WSHttpBindingBase) |
MessageVersion |
Obtiene la versión de mensaje utilizada por los 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 una conexión se abra 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 en la complejidad de mensajes SOAP que pueden ser procesados por 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 el cual no se recibe ningún mensaje de la aplicación, antes de interrumpir la conexión. (Heredado de Binding) |
ReliableSession |
Obtiene un objeto que proporciona acceso conveniente a las propiedades de un elemento de enlace de la sesión confiable que están disponibles al utilizar 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 que se configuran con este enlace. (Heredado de WSHttpBindingBase) |
Security |
Obtiene la configuración de seguridad utilizada con este enlace. |
SendTimeout |
Obtiene o establece el intervalo de tiempo proporcionado para que una operación de escritura se complete 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 debería admitir las transacciones WS de flujo. (Heredado de WSHttpBindingBase) |
UseDefaultWebProxy |
Obtiene o establece un valor que indica si se debería usar el proxy HTTP del sistema configurado automáticamente, 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 especificado de canal y 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 especificado de canal y satisface las características especificadas por una colección de parámetros de enlace. (Heredado de Binding) |
BuildChannelFactory<TChannel>(Object[]) |
Compila la pila de generador de canales en el cliente que crea un tipo especificado de canal y eso satisface las características especificadas por una matriz de objetos. (Heredado de Binding) |
BuildChannelListener<TChannel>(BindingParameterCollection) |
Compila el agente de escucha del canal en el servicio que acepta un tipo especificado de canal y eso 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 especificado de canal y 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 especificado de canal y 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 especificado de canal y 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 especificado de canal y 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 especificado de canal y 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 especificado de canal y 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 especificado de canal y satisface las características especificadas. (Heredado de Binding) |
CanBuildChannelFactory<TChannel>(BindingParameterCollection) |
Devuelve un valor que indica si el enlace actual puede compilar una pila de generador de canales en el cliente que satisfaga la colección especificada de parámetros de enlace. (Heredado de Binding) |
CanBuildChannelFactory<TChannel>(Object[]) |
Devuelve un valor que indica si el enlace actual puede compilar una pila de generador de canales en el cliente que satisfaga los requisitos especificados por una matriz de objetos. (Heredado de Binding) |
CanBuildChannelListener<TChannel>(BindingParameterCollection) |
Devuelve un valor que indica si el enlace actual puede compilar un agente de escucha de canal en el servicio que satisfaga la colección especificada de parámetros de enlace. (Heredado de Binding) |
CanBuildChannelListener<TChannel>(Object[]) |
Devuelve un valor que indica si el enlace actual puede compilar un agente de escucha de canal en el servicio que satisfaga la colección especificada de parámetros de enlace. (Heredado de Binding) |
CreateBindingElements() |
Devuelve una colección ordenada de los elementos de enlace contenidos en el enlace actual. |
CreateMessageSecurity() |
Devuelve el elemento de enlace de seguridad desde el enlace actual. |
Equals(Object) |
Determina si el objeto especificado es igual que el objeto actual. (Heredado de Object) |
GetHashCode() |
Sirve como la función hash predeterminada. (Heredado de Object) |
GetProperty<T>(BindingParameterCollection) |
Devuelve un objeto escrito solicitado de la capa adecuada en la pila de enlace si está presente. (Heredado de Binding) |
GetTransport() |
Devuelve el elemento de enlace de transporte desde el enlace actual. |
GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
MemberwiseClone() |
Crea una copia superficial del Object actual. (Heredado de Object) |
ShouldSerializeName() |
Devuelve un valor si se debe serializar el nombre del enlace. (Heredado de Binding) |
ShouldSerializeNamespace() |
Devuelve un valor si se debe serializar el espacio de nombres. (Heredado de Binding) |
ShouldSerializeReaderQuotas() |
Devuelve un valor que indica si la propiedad ReaderQuotas ha cambiado respecto de su valor predeterminado y se debe serializar. (Heredado de WSHttpBindingBase) |
ShouldSerializeReliableSession() |
Devuelve un valor que indica si la propiedad ReliableSession ha cambiado respecto de su valor predeterminado y se debe serializar. (Heredado de WSHttpBindingBase) |
ShouldSerializeSecurity() |
Devuelve un valor que indica si la propiedad Security ha cambiado respecto de su valor predeterminado y se debe serializar. |
ShouldSerializeTextEncoding() |
Devuelve un valor que indica si la propiedad TextEncoding ha cambiado respecto 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 de entrada se administran de forma sincrónica o asincrónica. (Heredado de WSHttpBindingBase) |