WSHttpBinding Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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) |