方法 : SOAP ヘッダーの受信者を変更する

このトピックの対象は、レガシ テクノロジに特定されています。XML Web サービスと XML Web サービス クライアントは以下を使用して作成してください。 Windows Communication Foundation.

コード例

既定では、Web サービス メソッドに SoapHeader 属性が適用されている場合、SOAP ヘッダーは Web サービス クライアントから Web サービス メソッドに送信されます。一方、SOAP ヘッダーを、Web サービス メソッドから Web サービス クライアントに送り返すこともできます。また、両方向で送信することもできます。Web サービス メソッドに適用する SoapHeader 属性の Direction プロパティを設定して、SOAP ヘッダーの受信者を制御します。Direction プロパティは、InOutInOut、および Fault の 4 つの値を持つ SoapHeaderDirection 型です。これらの値はそれぞれ、受信者 (Web サービス サーバーかどうか)、クライアント、または Web サービス サーバーとクライアントの両方、および Web サービスから例外がスローされたときに SOAP ヘッダーがクライアントに送信されるかどうかを表します。

メモ : .NET Framework SDK の Version 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. SOAP ヘッダーを処理する各 Web サービス メソッドに SoapHeader 属性を適用します。SoapHeaderDirection 列挙体を使用して Direction プロパティを対象の各受信者に設定します。DirectionSoapHeaderDirection.Out に設定して Web サービス クライアントを受信者として設定する例を次に示します。

    
        [WebMethod]
        [SoapHeader("myOutHeader",Direction=SoapHeaderDirection.Out)]
    
        <WebMethod, _
         SoapHeader("myOutHeader",Direction:=SoapHeaderDirection.Out)>
    
  4. 受信者に応じて、SOAP ヘッダーを処理または設定します。受信者が Web サービス クライアントである場合の SOAP ヘッダーの値の設定例を次に示します。

          // 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 サービス クライアントの作成

その他のリソース

SOAP ヘッダーの使用
ASP.NET を使用した XML Web サービス