共用方式為


WSHttpBinding 類別

定義

表示可互通的系結,可支持分散式交易和安全、可靠的會話。

public ref class WSHttpBinding : System::ServiceModel::WSHttpBindingBase
public class WSHttpBinding : System.ServiceModel.WSHttpBindingBase
type WSHttpBinding = class
    inherit WSHttpBindingBase
Public Class WSHttpBinding
Inherits WSHttpBindingBase
繼承
衍生

範例

下列範例程式代碼示範如何使用 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

備註

WSHttpBinding 類似於 BasicHttpBinding,但提供更多的Web服務功能。 它會使用 HTTP 傳輸並提供訊息安全性,如同 BasicHttpBinding,但也提供交易、可靠的傳訊和 WS 位址,預設為啟用,或透過單一控件設定提供。

建構函式

WSHttpBinding()

初始化 WSHttpBinding 類別的新實例。

WSHttpBinding(SecurityMode, Boolean)

使用系結所使用的指定安全性類型,以及指出是否啟用可靠會話的值,初始化 WSHttpBinding 類別的新實例。

WSHttpBinding(SecurityMode)

使用系結所使用的指定安全性類型,初始化 WSHttpBinding 類別的新實例。

WSHttpBinding(String)

使用組態名稱指定的系結,初始化 WSHttpBinding 類別的新實例。

屬性

AllowCookies

取得或設定值,這個值表示 WCF 用戶端是否會自動儲存並重新傳送單一 Web 服務所傳送的任何 Cookie。

BypassProxyOnLocal

取得或設定值,這個值表示是否要略過本機位址的 Proxy 伺服器。

(繼承來源 WSHttpBindingBase)
CloseTimeout

取得或設定在傳輸引發例外狀況之前,連接要關閉的時間間隔。

(繼承來源 Binding)
EnvelopeVersion

取得SOAP版本,這個版本用於這個系結所處理的訊息。

(繼承來源 WSHttpBindingBase)
HostNameComparisonMode

取得或設定值,這個值表示當符合 URI 時,主機名是否用來連線到服務。

(繼承來源 WSHttpBindingBase)
MaxBufferPoolSize

取得或設定使用這個系結管理端點所需緩衝區的緩衝區管理員,以位元組為單位配置的最大記憶體數量。

(繼承來源 WSHttpBindingBase)
MaxReceivedMessageSize

取得或設定系結可處理之訊息的大小上限,以位元組為單位。

(繼承來源 WSHttpBindingBase)
MessageEncoding

取得或設定 MTOM 或 Text/XML 是否用來編碼 SOAP 訊息。

(繼承來源 WSHttpBindingBase)
MessageVersion

取得客戶端和服務使用系結所使用之訊息版本。

(繼承來源 Binding)
Name

取得或設定系結的名稱。

(繼承來源 Binding)
Namespace

取得或設定系結的 XML 命名空間。

(繼承來源 Binding)
OpenTimeout

取得或設定在傳輸引發例外狀況之前,連接要開啟的時間間隔。

(繼承來源 Binding)
ProxyAddress

取得或設定 HTTP Proxy 的 URI 位址。

(繼承來源 WSHttpBindingBase)
ReaderQuotas

取得或設定 SOAP 訊息複雜度的條件約束,這些訊息可由使用此系結設定的端點處理。

(繼承來源 WSHttpBindingBase)
ReceiveTimeout

取得或設定連接在卸除之前,連接可以保持非使用中狀態的時間間隔,在此期間不會收到任何應用程式訊息。

(繼承來源 Binding)
ReliableSession

取得 對象,這個物件可讓您方便存取使用其中一個系統提供的系結時可用的可靠會話綁定項屬性。

(繼承來源 WSHttpBindingBase)
Scheme

取得這個系結所設定之通道和接聽項的 URI 傳輸配置。

(繼承來源 WSHttpBindingBase)
Security

取得與這個系結搭配使用的安全性設定。

SendTimeout

取得或設定傳輸引發例外狀況之前所提供寫入作業完成的時間間隔。

(繼承來源 Binding)
TextEncoding

取得或設定用於消息正文的字元編碼。

(繼承來源 WSHttpBindingBase)
TransactionFlow

取得或設定值,這個值表示這個系結是否應該支持流動的 WS-Transactions。

(繼承來源 WSHttpBindingBase)
UseDefaultWebProxy

取得或設定值,這個值表示是否應該使用系統自動設定的 HTTP Proxy,如果有的話。

(繼承來源 WSHttpBindingBase)

方法

BuildChannelFactory<TChannel>(BindingParameterCollection)

在用戶端上建置通道處理站堆疊,以建立指定的通道類型,並滿足係結參數集合所指定的功能。

BuildChannelFactory<TChannel>(BindingParameterCollection)

在用戶端上建置通道處理站堆疊,以建立指定的通道類型,並滿足係結參數集合所指定的功能。

(繼承來源 Binding)
BuildChannelFactory<TChannel>(Object[])

在用戶端上建置通道處理站堆疊,以建立指定的通道類型,並滿足物件陣列所指定的功能。

(繼承來源 Binding)
BuildChannelListener<TChannel>(BindingParameterCollection)

在接受指定通道類型的服務上建置通道接聽程式,並滿足系結參數集合所指定的功能。

(繼承來源 Binding)
BuildChannelListener<TChannel>(Object[])

在接受指定通道類型的服務上建置通道接聽程式,並滿足指定的功能。

(繼承來源 Binding)
BuildChannelListener<TChannel>(Uri, BindingParameterCollection)

在接受指定通道類型的服務上建置通道接聽程式,並滿足指定的功能。

(繼承來源 Binding)
BuildChannelListener<TChannel>(Uri, Object[])

在接受指定通道類型的服務上建置通道接聽程式,並滿足指定的功能。

(繼承來源 Binding)
BuildChannelListener<TChannel>(Uri, String, BindingParameterCollection)

在接受指定通道類型的服務上建置通道接聽程式,並滿足指定的功能。

(繼承來源 Binding)
BuildChannelListener<TChannel>(Uri, String, ListenUriMode, BindingParameterCollection)

在接受指定通道類型的服務上建置通道接聽程式,並滿足指定的功能。

(繼承來源 Binding)
BuildChannelListener<TChannel>(Uri, String, ListenUriMode, Object[])

在接受指定通道類型的服務上建置通道接聽程式,並滿足指定的功能。

(繼承來源 Binding)
BuildChannelListener<TChannel>(Uri, String, Object[])

在接受指定通道類型的服務上建置通道接聽程式,並滿足指定的功能。

(繼承來源 Binding)
CanBuildChannelFactory<TChannel>(BindingParameterCollection)

傳回值,這個值表示目前的系結是否可以在用戶端上建置通道處理站堆棧,以符合指定的系結參數集合。

(繼承來源 Binding)
CanBuildChannelFactory<TChannel>(Object[])

傳回值,這個值表示目前的系結是否可以在用戶端上建置通道處理站堆棧,以符合物件陣列所指定的需求。

(繼承來源 Binding)
CanBuildChannelListener<TChannel>(BindingParameterCollection)

傳回值,這個值表示目前的系結是否可以在符合所指定係結參數集合的服務上建置通道接聽程式堆疊。

(繼承來源 Binding)
CanBuildChannelListener<TChannel>(Object[])

傳回值,這個值表示目前的系結是否可以在符合 物件陣列中指定的準則的服務上建置通道接聽程式堆疊。

(繼承來源 Binding)
CreateBindingElements()

傳回目前系結中包含的綁定項已排序集合。

CreateMessageSecurity()

從目前的系結傳回安全性綁定項。

Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
GetHashCode()

做為預設哈希函式。

(繼承來源 Object)
GetProperty<T>(BindingParameterCollection)

從系結堆疊中適當的圖層傳回所要求的具型別物件。

(繼承來源 Binding)
GetTransport()

從目前的系結傳回傳輸綁定項。

GetType()

取得目前實例的 Type

(繼承來源 Object)
MemberwiseClone()

建立目前 Object的淺層複本。

(繼承來源 Object)
ShouldSerializeName()

傳回系結的名稱是否應該串行化。

(繼承來源 Binding)
ShouldSerializeNamespace()

傳回系結的命名空間是否應該串行化。

(繼承來源 Binding)
ShouldSerializeReaderQuotas()

傳回值,這個值表示 ReaderQuotas 屬性是否已經從其預設值變更,而且應該串行化。

(繼承來源 WSHttpBindingBase)
ShouldSerializeReliableSession()

傳回值,這個值表示 ReliableSession 屬性是否已經從其預設值變更,而且應該串行化。

(繼承來源 WSHttpBindingBase)
ShouldSerializeSecurity()

傳回值,這個值表示 Security 屬性是否已經從其預設值變更,而且應該串行化。

ShouldSerializeTextEncoding()

傳回值,這個值表示 TextEncoding 屬性是否已經從其預設值變更,而且應該串行化。

(繼承來源 WSHttpBindingBase)
ToString()

傳回表示目前 物件的字串。

(繼承來源 Object)

明確介面實作

IBindingRuntimePreferences.ReceiveSynchronously

取得值,這個值表示傳入要求是以同步或異步方式處理。

(繼承來源 WSHttpBindingBase)

適用於