共用方式為


HOW TO:變更 SOAP 標頭的收件者

本主題專門說明舊有技術。 應該使用下列建立 XML Web Service 及 XML Web Service 用戶端: Windows Communication Foundation.

程式碼範例

根據預設,當 SoapHeader 屬性套用至 Web 服務方法時,SOAP 標頭會由 Web 服務用戶端傳送至 Web 服務方法。不過,SOAP 標頭也可以由 Web 服務方法傳回至 Web 服務用戶端。它也可以雙向傳送。在套用至 Web 服務方法的 SoapHeader 屬性 (Attribute) 上,設定 Direction 屬性 (Property),會控制 SOAP 標頭的收件者。Direction 屬性屬於 SoapHeaderDirection 型別,有四個值:InOutInOutFault。這些值會分別參考收件者 (是否為 Web 服務伺服器)、用戶端、Web 服務伺服器和用戶端兩者,以及當 Web 服務擲回例外狀況時 SOAP 標頭是否傳送至用戶端。

注意:.NET Framework SDK 1.0 版不支援 Fault 值。

若要變更 SOAP 標頭收件者

  1. 定義 SOAP 標頭。

    public class MyHeader : SoapHeader 
    {
        public string Username;
        public string Password;
    }
    
    Public Class MyHeader : Inherits SoapHeader 
        Public Username As String
        Public Password As String
    End Class
    
  2. 在實作 Web 服務的類別中加入成員變數。

    [WebService(Namespace="https://www.contoso.com")]
    public class MyWebService : WebService
    {
        public MyHeader myOutHeader;
    
    <WebService(Namespace:="https://www.contoso.com")> _
    Public Class MyWebService : Inherits WebService
        Public myOutHeader As MyHeader
    
  3. SoapHeader 屬性套用至每個可處理 SOAP 標頭的 Web 服務方法。使用 SoapHeaderDirection 列舉型別,將 Direction 屬性設定為每個目標收件者。下列範例會藉由將 Direction 設定為 SoapHeaderDirection.Out,而將 Web 服務用戶端設定為收件者。

    
        [WebMethod]
        [SoapHeader("myOutHeader",Direction=SoapHeaderDirection.Out)]
    
        <WebMethod, _
         SoapHeader("myOutHeader",Direction:=SoapHeaderDirection.Out)>
    
  4. 根據收件者,處理或設定 SOAP 標頭。下列程式碼範例會設定 SOAP 標頭值,因為收件者是 Web 服務用戶端。

          // Return the client's authenticated name.
          myOutHeader.Username = User.Identity.Name;
    
          ' Return the client's authenticated name.
          myOutHeader.Username = User.Identity.Name
    
    

範例

下列程式碼範例會定義一個從 Web 服務方法傳送至用戶端的 MyHeader SOAP 標頭。

<%@ WebService Language="C#" Class="MyWebService" %>

using System.Web.Services;
using System.Web.Services.Protocols;

// Define a SOAP header by deriving from the SoapHeader base class.
public class MyHeader : SoapHeader 
{
    public string Username;
    public string Password;
}

[WebService(Namespace="https://www.contoso.com")]
public class MyWebService : WebService
{
    public MyHeader myOutHeader;
 
    [WebMethod]
    [SoapHeader("myOutHeader",Direction=SoapHeaderDirection.Out)]
    public void MyOutHeaderMethod() 
    {
      // Return the client's authenticated name.
      myOutHeader.Username = User.Identity.Name;          
    }
}
<%@ WebService Language="VB" Class="MyWebService" %>

Imports System.Web.Services
Imports System.Web.Services.Protocols

' Define a SOAP header by deriving from the SoapHeader base class.
Public Class MyHeader : Inherits SoapHeader 
    Public Username As String
    Public Password As String
End Class

<WebService(Namespace:="https://www.contoso.com")> _
Public Class MyWebService : Inherits WebService
    Public myOutHeader As MyHeader 
    
    <WebMethod, _
     SoapHeader("myOutHeader",Direction:=SoapHeaderDirection.Out)> _
    Public Sub MyOutHeaderMethod()
        ' Return the client's authenticated name.
        myOutHeader.Username = User.Identity.Name
    End Sub
End Class

另請參閱

參考

SoapHeader
SoapHeaderAttribute
SoapUnknownHeader
SoapHeaderException

概念

建置 XML Web Service 用戶端

其他資源

使用 SOAP 標頭
使用 ASP.NET 的 XML Web Service