次の方法で共有


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

コード例

既定では、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 サービス

Footer image

Copyright © 2007 by Microsoft Corporation.All rights reserved.