方法 : SOAP ヘッダーの受信者を変更する
このトピックの対象は、レガシ テクノロジに特定されています。XML Web サービスと XML Web サービス クライアントは以下を使用して作成してください。 Windows Communication Foundation.
コード例
既定では、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