방법: 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 헤더 수신자를 변경하려면
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
웹 서비스를 구현하는 클래스에 멤버 변수를 추가합니다.
[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 헤더를 처리할 각 웹 서비스 메서드에 SoapHeader 특성을 적용합니다. SoapHeaderDirection 열거형을 사용하여 Direction 속성을 원하는 수신자로 설정합니다. 다음 예제에서는 Direction을 SoapHeaderDirection.Out으로 설정하여 웹 서비스 클라이언트를 수신자로 설정합니다.
[WebMethod] [SoapHeader("myOutHeader",Direction=SoapHeaderDirection.Out)]
<WebMethod, _ SoapHeader("myOutHeader",Direction:=SoapHeaderDirection.Out)>
수신자에 따라 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