다음을 통해 공유


방법: SOAP 헤더의 수신자 변경

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

코드 예제

SoapHeader 특성이 웹 서비스 메서드에 적용되면 기본적으로 웹 서비스 클라이언트가 웹 서비스 메서드에 SOAP 헤더를 보냅니다. 하지만 웹 서비스 메서드가 웹 서비스 클라이언트에 SOAP 헤더를 돌려 보낼 수도 있으며, 두 가지 방법으로 모두 보낼 수도 있습니다. 웹 서비스 메서드에 적용되는 SoapHeader 특성의 Direction 속성 설정은 SOAP 헤더의 수신자를 제어합니다. Direction 속성은 SoapHeaderDirection 형식이며 In, Out, InOut, Fault의 네 가지 속성 값을 가집니다. 이 값은 각각 수신자(웹 서비스 서버인지 여부), 클라이언트, 웹 서버와 클라이언트 모두, 웹 서비스에서 예외가 throw될 때 SOAP 헤더를 클라이언트에 보낼지 여부를 나타냅니다.

참고: .NET Framework SDK 버전 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. 웹 서비스를 구현하는 클래스에 멤버 변수를 추가합니다.

    [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 헤더를 처리할 각 웹 서비스 메서드에 SoapHeader 특성을 적용합니다. SoapHeaderDirection 열거형을 사용하여 Direction 속성을 원하는 수신자로 설정합니다. 다음 예제에서는 DirectionSoapHeaderDirection.Out으로 설정하여 웹 서비스 클라이언트를 수신자로 설정합니다.

    
        [WebMethod]
        [SoapHeader("myOutHeader",Direction=SoapHeaderDirection.Out)]
    
        <WebMethod, _
         SoapHeader("myOutHeader",Direction:=SoapHeaderDirection.Out)>
    
  4. 수신자에 따라 SOAP 헤더를 처리하거나 설정합니다. 다음 코드 예제에서는 수신자가 웹 서비스 클라이언트이므로 SOAP 헤더 값을 설정합니다.

          // Return the client's authenticated name.
          myOutHeader.Username = User.Identity.Name;
    
          ' Return the client's authenticated name.
          myOutHeader.Username = User.Identity.Name
    
    

예제

다음 코드 예제에서는 웹 서비스 메서드에서 클라이언트로 보낼 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 services 클라이언트 빌드

기타 리소스

SOAP 헤더 사용
ASP.NET을 사용하는 XML Web services