Freigeben über


Vorgehensweise: Anpassen von SOAP-Nachrichten mit der XML-Serialisierung

Dieses Thema bezieht sich auf eine veraltete Technologie. XML-Webdienste und XML-Webdienstclients sollten nun mithilfe der folgenden Technologie erstellt werden: Windows Communication Foundation.

Der System.Web.Serialization-Namespace bietet zahlreiche Attribute zur Steuerung der XML-Serialisierung, die auf Parameter angewendet werden können und Werte von Webdienstmethoden zurückgeben. Dieses Thema zeigt die Verwendung des XmlElementAttribute-Attributs.

So geben Sie den Namen des XML-Elements an, das einen Parameter darstellt

  1. Wenden Sie ein XmlElement-Attribut auf den Parameter an, das den gewünschten Namen für das Element und, optional, einen Namespace angibt, wenn die Parameterformatierung auf Literal festgelegt ist. Wenn die Parameterformatierung auf Encoded festgelegt wird, wenden Sie ein SoapElement-Attribut auf den Parameter an.

    Im folgenden Codebeispiel wird erwartet, dass die Elementnamen, die die Parameter darstellen, MyAddressElement, MyZipElement und ReturnValueElement lauten. Es wird außerdem erwartet, dass der Elementname, der den Rückgabewert darstellt, ReturnValueElement lautet. Die Formatierung der Webdienstmethode im Beispiel ist Document, der Standard für 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
    

    Der Webdienst erwartet die folgende SOAP-Anforderung. Beachten Sie, dass die Namen der Elemente im Gegensatz zu den Parameternamen mit den Angaben im XmlElement-Attribut übereinstimmen.

    <?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>
    

Siehe auch

Verweis

System.Xml.Serialization Namespace
SoapDocumentMethodAttribute
SoapRpcMethodAttribute
SoapDocumentServiceAttribute
SoapRpcServiceAttribute

Konzepte

SOAP-Nachrichtenänderung mit SOAP-Erweiterungen
Erstellen von XML-Webdienstclients

Weitere Ressourcen

Anpassen der Formatierung von SOAP-Nachrichten
Introducing XML Serialization
XML-Webdienste, die ASP.NET verwenden