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
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
,MyZipElement
eReturnValueElement
. 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