SoapHeader.DidUnderstand プロパティ

定義

XML Web サービス メソッドで SOAP ヘッダーを適切に処理したかどうかを示す値を取得または設定します。

public:
 property bool DidUnderstand { bool get(); void set(bool value); };
public bool DidUnderstand { get; set; }
member this.DidUnderstand : bool with get, set
Public Property DidUnderstand As Boolean

プロパティ値

SOAP ヘッダーが適切に処理された場合は true。それ以外の場合は false

MyWebService の XML Web サービスは SOAP ヘッダーを MyHeader 定義し、XML Web サービス メソッドへの呼び出しと共に MyWebMethod 送信する必要があります。 さらに、 は MyWebMethod SOAP ヘッダー以外の SOAP ヘッダーを MyHeader 受け取ります。 処理できる SOAP ヘッダーの MyWebMethod 場合、 DidUnderstand は に true設定されます。

<%@ 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";
    }
}
<%@ 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

注釈

XML Web サービスによって定義された SOAP ヘッダーの場合、ASP.NET は、 の初期値 DidUnderstand を に設定して、XML Web サービス メソッドが SOAP ヘッダーを適切に true処理したと見なします。 XML Web サービスによって定義されていない SOAP ヘッダーの場合、初期値は です false。 ASP.NET メソッドが戻った後に にfalse設定された XML Web サービス メソッドDidUnderstandに渡された SOAP ヘッダーを検出すると、 SoapHeaderException は XML Web サービス メソッドの結果ではなく XML Web サービス クライアントにスローされます。

適用対象

こちらもご覧ください