Как изменить получателей заголовков 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
Задайте заголовок 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
Примените атрибут SoapHeader для каждого метода веб-службы, обрабатывающего заголовок SOAP. Задайте свойство Direction, указав всех получателей при помощи перечисления SoapHeaderDirection. В следующем примере клиент веб-службы указывается как получатель, т.к. для свойства 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
Пример
В следующем примере кода определяется заголовок 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="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-веб-службы
Другие ресурсы
Использование заголовков SOAP
XML-веб-службы с использованием ASP.NET