Condividi tramite


Procedura: personalizzare il messaggi SOAP con la serializzazione XML

Questo argomento è specifico di una tecnologia legacy. Servizi Web XML e client di servizi Web XML devono essere creati attualmente tramite Windows Communication Foundation.

Lo spazio dei nomi System.Web.Serialization fornisce numerosi attributi per il controllo della serializzazione XML che può essere applicata a parametri e valori restituiti di metodi del servizio Web. In questo argomento viene illustrato come utilizzare l'attributo XmlElementAttribute.

Per specificare il nome dell'elemento XML che rappresenta un parametro

  1. Applicare un attributo XmlElement al parametro che specifica il nome desiderato per l'elemento e, facoltativamente, uno spazio dei nomi se la formattazione del parametro è impostata su Literal. Se la formattazione del parametro è impostata su Encoded, applicare un attributo SoapElement al parametro.

    Nell'esempio di codice riportato di seguito si sono i nomi previsti dell'elemento che rappresentano i parametri sono MyAddressElement, MyZipElemente ReturnValueElement. Il nome previsto dell'elemento che rappresenta il valore restituito è ReturnValueElement. Nell'esempio, il metodo di formattazione del servizio Web è Document, che è l'impostazione predefinita in 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
    

    Il servizio Web prevede la seguente richiesta SOAP. Notare che i nomi degli elementi corrispondono a quelli specificati nell'attributo XmlElement, al contrario dei nomi dei paramentri.

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

Vedere anche

Riferimento

System.Xml.Serialization Namespace
SoapDocumentMethodAttribute
SoapRpcMethodAttribute
SoapDocumentServiceAttribute
SoapRpcServiceAttribute

Concetti

Modifica di messaggi SOAP utilizzando estensioni SOAP
Compilazione di client dei servizi Web XML

Altre risorse

Personalizzazione della formattazione dei messaggi SOAP
Introducing XML Serialization
Creare servizi Web XML mediante ASP.NET