Поделиться через


Как настроить сообщения SOAP с XML-сериализацией

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

Пространство имен System.Web.Serialization обеспечивает множество атрибутов для управления XML-сериализацией, которые можно применять к параметрам и возвращаемым значениям методов веб-службы. В этом разделе демонстрируется использование атрибута XmlElementAttribute.

Указание имени элемента XML, представляющего параметр

  1. Примените атрибут XmlElement к параметру, задающему имя элемента, и дополнительно пространство имен, если параметру задан формат Literal. Если параметру задан формат Encoded, примените к нему атрибут SoapElement.

    В следующем примере кода предполагается, что элементы, представляющие параметры, имеют следующие имена: MyAddressElement, MyZipElement и ReturnValueElement. Также предполагается, что элемент, представляющий возвращаемое значение, имеет имя ReturnValueElement. В этом примере методы веб-службы имеют формат Document, используемый по умолчанию в ASP.NET.

    <%@ WebService Language="C#" Class="SoapDocumentServiceSample" %>
     using System.Web.Services;
     using System.Web.Services.Protocols;
     using System.Xml.Serialization;
    
    [WebService(Namespace="https://www.contoso.com")] 
    public class SoapDocumentServiceSample  
    {
      [ WebMethod ]
      [ return: XmlElement("ReturnValueElement",IsNullable=false)]
      public Address ValidateAddress(
        [XmlElement("MyAddressElement")] Address MyAddress,
        [XmlElement("MyZipElement")] bool useZipPlus4) 
      {
        useZipPlus4 = true;    
        return new Address();
      }
    }
    
    <%@ WebService Language="VB" Class="SoapDocumentServiceSample" %>
     Imports System.Web.Services
     Imports System.Web.Services.Protocols
     Imports System.Xml.Serialization
    
    <WebService(Namespace := "https://www.contoso.com")> _
    Public Class SoapDocumentServiceSample
      < WebMethod > _
      Public Function ValidateAddress( _
           <XmlElement("MyAddressElement")> MyAddress As Address, _
           <XmlElement("MyZipElement")> useZipPlus4 As Boolean)  
           As <XmlElement("ReturnValueElement",IsNullable :=false)> _
           Address 
            useZipPlus4 = True 
         Return new Address()
      End Function
    End Class
    

    Веб-служба ожидает следующий запрос SOAP. Обратите внимание: имена элементов соответствуют указанным с помощью атрибута XmlElement, в отличие от имен параметров.

    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
      <soap:Body>
        <ValidateAddress xmlns="http://tempuri.org/">
          <MyAddressElement>
            <Street>string</Street>
            <City>string</City>
            <Zip>string</Zip>
          </MyAddressElement>
          <MyZipElement>boolean</MyZipElement>
        </ValidateAddress>
      </soap:Body>
    </soap:Envelope>
    

См. также

Справочник

System.Xml.Serialization Namespace
SoapDocumentMethodAttribute
SoapRpcMethodAttribute
SoapDocumentServiceAttribute
SoapRpcServiceAttribute

Основные понятия

Изменение сообщений SOAP с помощью расширений SOAP
Создание клиентов XML-веб-службы

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

Настройка форматирования сообщения SOAP
Introducing XML Serialization
XML-веб-службы с использованием ASP.NET