Compartir a través de


WSHttpBinding Clase

Definición

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)

Se aplica a