이 설명서는 보관되지만 유지 되지 않습니다.

방법: 알 수 없는 SOAP 헤더 처리

이 항목은 레거시 기술과 관련된 것입니다. 이제 XML Web services와 XML Web services 클라이언트는 다음을 사용하여 만들어야 합니다. Windows Communication Foundation .

웹 서비스 클라이언트는 웹 서비스에 필요했지만 명시적으로 정의되지 않은 웹 서비스 메서드에 SOAP 헤더를 포함하는 SOAP 요청을 보낼 수 있습니다. SOAP 사양에 따르면 SOAP 헤더에 mustUnderstand 특성이 true로 설정되어 있을 경우 예외가 throw되기 때문에 이 경우 SOAP 헤더의 의미를 인식하고 처리할지 여부를 결정해야 합니다. 클라이언트에 필요한 SOAP 헤더 처리에 대한 자세한 내용은 XML Web Services 클라이언트에 필요한 SOAP 헤더 처리를 참조하십시오.

웹 서비스 클라이언트에서 알 수 없는 SOAP 헤더를 처리하려면

  1. 여러 개의 알 수 없는 SOAP 헤더를 처리하려면 형식이 SoapUnknownHeader, SoapHeader 또는 둘의 배열인 웹 서비스를 구현하는 클래스에 멤버 변수를 추가합니다.

    형식을 SoapUnknownHeader의 단일 인스턴스나 배열로 선언하면 SoapUnknownHeaderElement 속성이 포함된다는 한 가지 이점이 있습니다. Element 속성은 XmlElement 형식으로서, SOAP 요청 또는 SOAP 응답의 Header 요소에 대한 XML 문서를 나타냅니다. 따라서 웹 서비스 메서드는 Element 속성을 조회하여 SOAP 헤더에서 전달한 데이터와 함께 SOAP 헤더의 이름을 확인할 수 있습니다.

    public class MyWebService {
        public SoapUnknownHeader[] unknownHeaders;
    
    

    Public Class MyWebService
        Public unknownHeaders() As SoapUnknownHeader
    
  2. 알 수 없는 각각의 SOAP 헤더를 처리하려면 각 웹 서비스 메서드에 SoapHeader 특성을 적용합니다.

        
        [WebMethod]
        [SoapHeader("unknownHeaders")]
        public string MyWebMethod()
    
    

        <WebMethod, _
         SoapHeader("unknownHeaders") > _
        Public Function MyWebMethod() As String
     
    
  3. 알 수 없는 SOAP 헤더를 처리할 수 있는지 여부를 결정하는 코드를 추가합니다.

    멤버 변수의 형식이 SoapUnknownHeader인 경우 웹 서비스 메서드는 Element 속성을 조회하여 SOAP 헤더에서 전달된 데이터와 함께 SOAP 헤더의 이름을 확인할 수 있습니다. Element 속성의 Name 속성은 SOAP 헤더의 이름을 식별합니다.

           
           foreach (SoapUnknownHeader header in unknownHeaders) 
           {
             // Check to see if this a known header.
             if (header.Element.Name == "MyKnownHeader")
    
    

           Dim header As SoapUnknownHeader       
           For Each header In unknownHeaders
             ' Check to see if this is a known header.
             If (header.Element.Name = "MyKnownHeader") Then
    
  4. 특정 SOAP 헤더를 처리하는 방법이 알려져 있는 경우, 알 수 없는 SOAP 헤더를 나타내는 멤버 변수의 DidUnderstand 속성을 true로 설정합니다.

    웹 서비스 메서드에서 알 수 없는 SOAP 헤더를 처리하지만 DidUnderstand 속성이 true로 설정되어 있지 않은 경우 SoapHeaderException이 throw될 수 있습니다. 자세한 내용은 XML Web Services 클라이언트에 필요한 SOAP 헤더 처리를 참조하십시오.

             // Check to see if this is a known header.
             if (header.Element.Name == "MyKnownHeader")
                   header.DidUnderstand = true;
             else
                 // For those headers that cannot be 
                 // processed, set DidUnderstand to false.
                 header.DidUnderstand = false;
             }
    
    

             ' Check to see if this a known header.
             If (header.Element.Name = "MyKnownHeader") Then
                   header.DidUnderstand = True
             Else
                 ' For those headers that cannot be 
                 ' processed, set DidUnderstand to false.
                 header.DidUnderstand = False
             End If
    
    hf2y839a.note(ko-kr,VS.100).gif참고:
    DidUnderstand 속성은 ASP.NET에서 만든 웹 서비스에서 웹 서비스 메서드와 통신하는 데 사용됩니다. 이 속성은 SOAP 사양에 속하지 않으며, 속성 값은 SOAP 요청 또는 SOAP 응답에 표시되지 않습니다.

    hf2y839a.note(ko-kr,VS.100).gif참고:
    웹 서비스 클라이언트가 웹 서비스 기술 언어 도구(Wsdl.exe)를 사용하여 프록시 클래스를 빌드하고, 웹 서비스가 SoapUnknownHeader 형식을 사용하여 SOAP 헤더를 나타내는 멤버 변수를 정의하는 경우 해당 SOAP 헤더에 대한 참조가 프록시 클래스에 추가되지 않습니다. 웹 서비스 클라이언트에서 SOAP 헤더 또는 SOAP 요청에 추가하려면 멤버 변수를 추가하고 해당 웹 서비스 메서드를 호출하는 메서드에 SoapHeader 특성을 적용하여 프록시 클래스를 수정해야 합니다.

참고 항목

표시: