次の方法で共有


SoapHeader クラス

派生クラスでオーバーライドされると、SOAP ヘッダーの内容を表します。

この型のすべてのメンバの一覧については、SoapHeader メンバ を参照してください。

System.Object
   System.Web.Services.Protocols.SoapHeader
      System.Web.Services.Protocols.SoapUnknownHeader

MustInherit Public Class SoapHeader
[C#]
public abstract class SoapHeader
[C++]
public __gc __abstract class SoapHeader
[JScript]
public abstract class SoapHeader

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

SOAP ヘッダーを使用すると、データが XML Web サービス メソッドの基本機能に直接に関連していない場合は、データを Web サービス メソッドに渡したり、Web サービス メソッドからデータを返すことができます。たとえば、XML Web サービスに、それぞれがカスタム認証方式を必要とする XML Web サービス メソッドが格納されている場合があります。この場合は、カスタム認証方式についてパラメータを各 XML Web サービス メソッドに追加する代わりに、 SoapHeader の派生クラスを参照する SoapHeaderAttribute をそれぞれの XML Web サービス メソッドに適用できます。 SoapHeader の派生クラスの実装により、カスタム認証方式が処理されます。この方法では、XML Web サービス メソッドはメソッド固有の機能だけを実装し、SOAP ヘッダーを使用して機能を追加します。

SOAP ヘッダーを受信し処理する基本手順の概要を次の一覧に示します。

  1. SOAP ヘッダーに渡されたデータを表す SoapHeader の派生クラスを作成します。
  2. XML Web サービスまたは XML Web サービス クライアント プロキシ クラスを実装するクラスに、最初の手順で作成した型のメンバを追加します。
  3. 2 番目の手順で作成したメンバを MemberName プロパティで指定して、 SoapHeaderAttribute を XML Web サービス メソッドまたはプロキシ クラス内の対応するメソッドに適用します。
  4. XML Web サービス メソッドまたは XML Web サービス クライアント コード内で MemberName プロパティにアクセスし、SOAP ヘッダーに送信されたデータを処理します。

使用例

[Visual Basic, C#] MyWebService XML Web サービスが MyHeader SOAP ヘッダーを定義し、 MyWebMethod XML Web サービス メソッドへの呼び出しと共に送信されるようにする例を次に示します。また、 MyWebMethodMyHeader SOAP ヘッダー以外のすべての SOAP ヘッダーを受信します。

 
<%@ WebService Language="VB" Class="MyWebService"%>

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

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

Public Class MyWebService
    
    Public theHeader As MyHeader
    ' Receive all SOAP headers besides the MyHeader SOAP header.
    Public unknownHeaders() As SoapUnknownHeader    

    'Receive any SOAP headers other than MyHeader.    
    <WebMethod, _
     SoapHeader("theHeader", Direction := SoapHeaderDirection.InOut), _
     SoapHeader("unknownHeaders")> _
    Public Function MyWebMethod() As String
                
        Dim header As SoapUnknownHeader
        For Each header In unknownHeaders
            ' Perform some processing on the header.
            If header.Element.Name = "MyKnownHeader" Then
                header.DidUnderstand = True
            Else
                ' For those headers that cannot be
                ' processed, set the DidUnderstand propert to false.
                header.DidUnderstand = False
            End If
        Next header
        Return "Hello"
    End Function
    
End Class


[C#] 
<%@ WebService Language="C#" Class="MyWebService"%>
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml;
using System;

// Define a SOAP header by deriving from the SoapHeader base class.

public class MyHeader : SoapHeader {
    public string MyValue;
}

public class MyWebService {

    public MyHeader myHeader;
    // Receive all SOAP headers besides the MyHeader SOAP header.
    public SoapUnknownHeader[] unknownHeaders;
 
    [WebMethod]
    [SoapHeader("myHeader", Direction=SoapHeaderDirection.InOut)]

    //Receive any SOAP headers other than MyHeader.
    [SoapHeader("unknownHeaders",Required=false)]

    public string MyWebMethod() {

       foreach (SoapUnknownHeader header in unknownHeaders) {
           // Perform some processing on the header.
       if (header.Element.Name == "MyKnownHeader")
               header.DidUnderstand = true;
       else
                // For those headers that cannot be  
                // processed, set the DidUnderstand property to false.
                header.DidUnderstand = false;
       }
       return "Hello";
    }
}

[C++, JScript] C++ および JScript のサンプルはありません。Visual Basic および C# のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.Web.Services.Protocols

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET

アセンブリ: System.Web.Services (System.Web.Services.dll 内)

参照

SoapHeader メンバ | System.Web.Services.Protocols 名前空間 | SoapUnknownHeader | SoapHeaderException | SoapHeaderAttribute | SoapHeaderDirection