方法 : SOAP ヘッダーの受信者を変更する
コード例
既定では、Web サービス メソッドに SoapHeader 属性が適用されている場合、SOAP ヘッダーは Web サービス クライアントから Web サービス メソッドに送信されます。一方、SOAP ヘッダーを、Web サービス メソッドから Web サービス クライアントに送り返すこともできます。また、両方向で送信することもできます。Web サービス メソッドに適用する SoapHeader 属性の Direction プロパティを設定して、SOAP ヘッダーの受信者を制御します。Direction プロパティは、In、Out、InOut、および Fault の 4 つの値を持つ SoapHeaderDirection 型です。これらの値はそれぞれ、受信者 (Web サービス サーバーかどうか)、クライアント、または Web サービス サーバーとクライアントの両方、および Web サービスから例外がスローされたときに SOAP ヘッダーがクライアントに送信されるかどうかを表します。
メモ : .NET Framework SDK の Version 1.0 では Fault 値をサポートしていません。
SOAP ヘッダーの受信者を変更するには
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
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
SOAP ヘッダーを処理する各 Web サービス メソッドに SoapHeader 属性を適用します。SoapHeaderDirection 列挙体を使用して Direction プロパティを対象の各受信者に設定します。Direction を SoapHeaderDirection.Out に設定して Web サービス クライアントを受信者として設定する例を次に示します。
[WebMethod] [SoapHeader("myOutHeader",Direction=SoapHeaderDirection.Out)]
<WebMethod, _ SoapHeader("myOutHeader",Direction:=SoapHeaderDirection.Out)>
受信者に応じて、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
概念
その他の技術情報
SOAP ヘッダーの使用
ASP.NET を使用した XML Web サービス
Copyright © 2007 by Microsoft Corporation.All rights reserved.