Как изменить получателей заголовков SOAP

Этот раздел посвящен технологии прежних версий. Веб-службы XML и клиенты веб-служб XML должны создаваться с использованием Windows Communication Foundation.

Пример кода

По умолчанию заголовки SOAP отправляются клиентом веб-службы методу веб-службы, когда к методу веб-службы применен атрибут SoapHeader. Однако заголовок SOAP также может быть отправлен методом веб-службы обратно клиенту веб-службы. Также он может посылаться в обоих направлениях. Получатель заголовка SOAP задается свойством Direction атрибута SoapHeader, примененного к методу веб-службы. Свойство Direction принадлежит к типу SoapHeaderDirection, имеющему четыре значения: In, Out, InOut и Fault. Они указывают соответственно, что получателем является сервер веб-службы, клиент или оба; последнее значение указывает, что заголовок SOAP посылается клиенту, когда веб-служба создает исключение.

Примечание: версия 1.0 .NET Framework SDK не поддерживает значение 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="http://www.contoso.com")]
    public class MyWebService : WebService
    {
        public MyHeader myOutHeader;
    
    <WebService(Namespace:="http://www.contoso.com")> _
    Public Class MyWebService : Inherits WebService
        Public myOutHeader As MyHeader
    
  3. Примените атрибут SoapHeader для каждого метода веб-службы, обрабатывающего заголовок SOAP. Задайте свойство Direction, указав всех получателей при помощи перечисления SoapHeaderDirection. В следующем примере клиент веб-службы указывается как получатель, т.к. для свойства Direction устанавливается значение SoapHeaderDirection.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
    
    

Пример

В следующем примере кода определяется заголовок SOAP MyHeader, который посылается методом веб-службы клиенту.

<%@ 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="http://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:="http://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-веб-службы

Другие ресурсы

Использование заголовков SOAP
XML-веб-службы с использованием ASP.NET