Condividi tramite


WSHttpBinding Classe

Definizione

Rappresenta un'associazione interoperativa che supporta transazioni distribuite e sessioni affidabili e protette.

public ref class WSHttpBinding : System::ServiceModel::WSHttpBindingBase
public class WSHttpBinding : System.ServiceModel.WSHttpBindingBase
type WSHttpBinding = class
    inherit WSHttpBindingBase
Public Class WSHttpBinding
Inherits WSHttpBindingBase
Ereditarietà
Derivato

Esempio

Nel codice di esempio seguente viene illustrato come utilizzare la classe 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

Commenti

WSHttpBinding è simile a BasicHttpBinding ma fornisce più funzionalità del servizio Web. Tale classe utilizza il trasporto HTTP e fornisce sicurezza di messaggi, analogamente a BasicHttpBinding, ma fornisce anche funzionalità per transazioni, messaggistica affidabile e WS-Addressing, abilitate per impostazione predefinita o disponibili tramite impostazione di un singolo controllo.

Costruttori

WSHttpBinding()

Inizializza una nuova istanza della classe WSHttpBinding.

WSHttpBinding(SecurityMode)

Consente di inizializzare una nuova istanza della classe WSHttpBinding con il tipo specificato di sicurezza utilizzato dall'associazione.

WSHttpBinding(SecurityMode, Boolean)

Consente di inizializzare una nuova istanza della classe WSHttpBinding con un tipo specificato di sicurezza utilizzato dall'associazione e con un valore che indica se è abilitata una sessione affidabile.

WSHttpBinding(String)

Consente di inizializzare una nuova istanza della classe WSHttpBinding con un'associazione specificata in base al nome di configurazione.

Proprietà

AllowCookies

Ottiene o imposta un valore che indica se il client WCF archivierà e invierà nuovamente in modo automatico i cookie inviati da un singolo servizio Web.

BypassProxyOnLocal

Ottiene o imposta un valore che indica se ignorare il server proxy per indirizzi locali.

(Ereditato da WSHttpBindingBase)
CloseTimeout

Ottiene o imposta l'intervallo di tempo fornito per la chiusura di una connessione prima che il trasporto generi un'eccezione.

(Ereditato da Binding)
EnvelopeVersion

Ottiene la versione di SOAP utilizzata per i messaggi elaborati da questa associazione.

(Ereditato da WSHttpBindingBase)
HostNameComparisonMode

Ottiene o imposta un valore che indica se viene utilizzato il nome host per raggiungere il servizio in caso di corrispondenza dell'URI.

(Ereditato da WSHttpBindingBase)
MaxBufferPoolSize

Ottiene o imposta la quantità massima di memoria allocata in byte al gestore dei buffer necessari agli endpoint che utilizzano questa associazione.

(Ereditato da WSHttpBindingBase)
MaxReceivedMessageSize

Ottiene o imposta la dimensione massima in byte per un messaggio che può essere elaborato dall'associazione.

(Ereditato da WSHttpBindingBase)
MessageEncoding

Ottiene o imposta un valore che specifica se viene utilizzato MTOM o Text/XML per codificare messaggi SOAP.

(Ereditato da WSHttpBindingBase)
MessageVersion

Ottiene la versione del messaggio utilizzata dai client e dai servizi configurati con l'associazione.

(Ereditato da Binding)
Name

Ottiene o imposta il nome dell'associazione.

(Ereditato da Binding)
Namespace

Ottiene o imposta lo spazio dei nomi XML dell'associazione.

(Ereditato da Binding)
OpenTimeout

Ottiene o imposta l'intervallo di tempo fornito per l'apertura di una connessione prima che il trasporto generi un'eccezione.

(Ereditato da Binding)
ProxyAddress

Ottiene o imposta l'indirizzo URI del proxy HTTP.

(Ereditato da WSHttpBindingBase)
ReaderQuotas

Ottiene o imposta vincoli sulla complessità dei messaggi SOAP che possono essere elaborati dagli endpoint configurati con questa associazione.

(Ereditato da WSHttpBindingBase)
ReceiveTimeout

Ottiene o imposta l'intervallo di tempo durante il quale una connessione rimane inattiva, senza ricevere messaggi dell'applicazione, prima di essere rilasciata.

(Ereditato da Binding)
ReliableSession

Ottiene un oggetto che consente di accedere agevolmente alle proprietà di un elemento di associazione di una sessione affidabile che sono disponibili quando si utilizza una delle associazioni fornite dal sistema.

(Ereditato da WSHttpBindingBase)
Scheme

Ottiene lo schema di trasporto URI per i canali e i listener configurati con questa associazione.

(Ereditato da WSHttpBindingBase)
Security

Ottiene le impostazioni di sicurezza utilizzate con questa associazione.

SendTimeout

Ottiene o imposta l'intervallo di tempo fornito per il completamento di un'operazione di scrittura prima che il trasporto generi un'eccezione.

(Ereditato da Binding)
TextEncoding

Ottiene o imposta la codifica dei caratteri utilizzata per il testo dei messaggi.

(Ereditato da WSHttpBindingBase)
TransactionFlow

Ottiene o imposta un valore che indica se l'associazione deve supportare la propagazione di WS-Transactions.

(Ereditato da WSHttpBindingBase)
UseDefaultWebProxy

Ottiene o imposta un valore che indica se il proxy HTTP configurato automaticamente del sistema deve essere utilizzato, se disponibile.

(Ereditato da WSHttpBindingBase)

Metodi

BuildChannelFactory<TChannel>(BindingParameterCollection)

Compila lo stack della channel factory nel client che crea un tipo specificato di canale e che soddisfa le funzionalità specificate da una raccolta di parametri di associazione.

BuildChannelFactory<TChannel>(BindingParameterCollection)

Compila lo stack della channel factory nel client che crea un tipo specificato di canale e che soddisfa le funzionalità specificate da una raccolta di parametri di associazione.

(Ereditato da Binding)
BuildChannelFactory<TChannel>(Object[])

Compila lo stack della channel factory nel client che crea un tipo specificato di canale e che soddisfa le funzionalità specificate da una matrice di oggetti.

(Ereditato da Binding)
BuildChannelListener<TChannel>(BindingParameterCollection)

Compila il listener del canale nel servizio che accetta un tipo specificato di canale e che soddisfa le funzionalità specificate da una raccolta di parametri di associazione.

(Ereditato da Binding)
BuildChannelListener<TChannel>(Object[])

Compila il listener del canale sul servizio che accetta un tipo di canale specificato e che presenta le funzionalità specificate.

(Ereditato da Binding)
BuildChannelListener<TChannel>(Uri, BindingParameterCollection)

Compila il listener del canale sul servizio che accetta un tipo di canale specificato e che presenta le funzionalità specificate.

(Ereditato da Binding)
BuildChannelListener<TChannel>(Uri, Object[])

Compila il listener del canale sul servizio che accetta un tipo di canale specificato e che presenta le funzionalità specificate.

(Ereditato da Binding)
BuildChannelListener<TChannel>(Uri, String, BindingParameterCollection)

Compila il listener del canale sul servizio che accetta un tipo di canale specificato e che presenta le funzionalità specificate.

(Ereditato da Binding)
BuildChannelListener<TChannel>(Uri, String, ListenUriMode, BindingParameterCollection)

Compila il listener del canale sul servizio che accetta un tipo di canale specificato e che presenta le funzionalità specificate.

(Ereditato da Binding)
BuildChannelListener<TChannel>(Uri, String, ListenUriMode, Object[])

Compila il listener del canale sul servizio che accetta un tipo di canale specificato e che presenta le funzionalità specificate.

(Ereditato da Binding)
BuildChannelListener<TChannel>(Uri, String, Object[])

Compila il listener del canale sul servizio che accetta un tipo di canale specificato e che presenta le funzionalità specificate.

(Ereditato da Binding)
CanBuildChannelFactory<TChannel>(BindingParameterCollection)

Restituisce un valore che indica se l'associazione corrente può compilare uno stack della channel factory nel client che soddisfa la raccolta dei parametri di associazione specificati.

(Ereditato da Binding)
CanBuildChannelFactory<TChannel>(Object[])

Restituisce un valore che indica se l'associazione corrente può compilare uno stack della channel factory nel client che soddisfa i requisiti specificati da una matrice di oggetti.

(Ereditato da Binding)
CanBuildChannelListener<TChannel>(BindingParameterCollection)

Restituisce un valore che indica se l'associazione corrente può compilare uno stack del channel listener nel servizio che soddisfa la raccolta dei parametri di associazione specificati.

(Ereditato da Binding)
CanBuildChannelListener<TChannel>(Object[])

Restituisce un valore che indica se l'associazione corrente può compilare uno stack del channel listener nel servizio che soddisfa i criteri specificati in una matrice di oggetti.

(Ereditato da Binding)
CreateBindingElements()

Restituisce una raccolta ordinata di elementi di associazione contenuti nell'associazione corrente.

CreateMessageSecurity()

Restituisce l'elemento di associazione di sicurezza dell'associazione corrente.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetProperty<T>(BindingParameterCollection)

Se presente, restituisce un oggetto tipizzato richiesto dal livello appropriato nello stack dell'associazione.

(Ereditato da Binding)
GetTransport()

Restituisce l'elemento di associazione di trasporto dell'associazione corrente.

GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ShouldSerializeName()

Indica se il nome dell'associazione deve essere serializzato.

(Ereditato da Binding)
ShouldSerializeNamespace()

Indica se lo spazio dei nomi dell'associazione deve essere serializzato.

(Ereditato da Binding)
ShouldSerializeReaderQuotas()

Restituisce un valore che indica se la proprietà ReaderQuotas è cambiata rispetto al valore predefinito e deve essere serializzata.

(Ereditato da WSHttpBindingBase)
ShouldSerializeReliableSession()

Restituisce un valore che indica se la proprietà ReliableSession è cambiata rispetto al valore predefinito e deve essere serializzata.

(Ereditato da WSHttpBindingBase)
ShouldSerializeSecurity()

Restituisce un valore che indica se la proprietà Security è cambiata rispetto al valore predefinito e deve essere serializzata.

ShouldSerializeTextEncoding()

Restituisce un valore che indica se la proprietà TextEncoding è cambiata rispetto al valore predefinito e deve essere serializzata.

(Ereditato da WSHttpBindingBase)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

IBindingRuntimePreferences.ReceiveSynchronously

Ottiene un valore che indica se le richieste in entrata vengono gestite in modo sincrono o in modo asincrono.

(Ereditato da WSHttpBindingBase)

Si applica a