Cómo: Controlar el formato de parámetros y valores devueltos para un método de servicio Web
Este tema es específico de una tecnología heredada. Ahora, los servicios Web XML y los clientes de servicios Web XML deben crearse con Windows Communication Foundation.
Para el formato, o uso, de elementos XML que corresponden a parámetros de método y valores devueltos, el lenguaje de descripción de servicios Web (WSDL) proporciona dos opciones: SOAP codificado y literal. .NET Framework controla estas opciones en código con los atributos. Aunque ASP.NET proporciona una arquitectura extensa para controlar cómo se da formato al XML, no se garantiza el orden en el que se serializan los parámetros.
Para especificar formato de parámetro Literal
Aplique un atributo SoapDocumentMethod a un método en la clase de proxy, estableciendo la propiedad Use en SoapBindingUse.Literal.
La enumeración SoapBindingUse especifica los estilos de formato de los parámetros disponible a un servicio Web creado con ASP.NET.
[SoapDocumentMethod( "https://www.contoso.com/DocumentLiteral", RequestNamespace="https://www.contoso.com", ResponseNamespace="https://www.contoso.com", Use=SoapBindingUse.Literal)] public string DocumentLiteral(Address1 address, bool useZipPlus4) {
<SoapDocumentMethod( _ "https://www.contoso.com/DocumentLiteral", _ RequestNamespace:="https://www.contoso.com", _ ResponseNamespace:="https://www.contoso.com", _ Use:=SoapBindingUse.Literal)> _ Public Function DocumentLiteral(ByVal address As Address1, _ ByVal useZipPlus4 As Boolean) As String
La parte XML de la solicitud SOAP al método de servicio Web
DocumentLiteral
continúa. Los parámetros residen dentro del elemento Body y están codificados como documentos XML por sí mismos, ya que hacen referencia a un esquema XSD.<?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> <DocumentLiteral xmlns="https://www.contoso.com"> <address> <Street>One Microsoft Way</Street> <City>Redmond</City> <Zip>98052</Zip> </address> <useZipPlus4>True</useZipPlus4> </DocumentLiteral> </soap:Body> </soap:Envelope>
Para especificar un formato de parámetro codificado
Aplique un atributo SoapDocumentMethod o un atributo SoapRpcMethod al método en la clase de proxy, estableciendo la propiedad Use en SoapBindingUse.Encoded.
A diferencia del estilo de formato de parámetros Literal, el estilo de formato de los parámetros Codificado se puede utilizar junto con ambos estilos de formato de método de servicio Web. Para obtener más detalles sobre los estilos de formato de método de servicio Web, consulte Compatibilidad de .NET Framework para formatos SOAP
[SoapDocumentMethod("https://www.contoso.com/DocumentEncoded", RequestNamespace="https://www.contoso.com", ResponseNamespace="https://www.contoso.com", Use=SoapBindingUse.Encoded)] public string DocumentEncoded(Address address, bool useZipPlus4) {
<SoapDocumentMethod("https://www.contoso.com/DocumentEncoded", _ RequestNamespace:="https://www.contoso.com", _ ResponseNamespace:="https://www.contoso.com", _ Use:=SoapBindingUse.Encoded)> _ Public Function DocumentEncoded(ByVal address As Address, _ ByVal useZipPlus4 As Boolean) As String
La parte XML de la solicitud SOAP al método de servicio
DocumentEncoded
continúa. Observe cómo los parámetros se representan de manera muy diferente que en el estilo de formato Literal, ya que se les da formato utilizando las reglas de la codificación descritas en la sección 5 de la especificación SOAP. Preste especial atención al parámetroaddress
, que no es un tipo de datos simple.<?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:soapenc="https://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="https://www.contoso.com" xmlns:tnsTypes="https://www.contoso.com/encodedTypes" xmlns:wsdl="https://schemas.xmlsoap.org/wsdl/" xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/"> <soap:Body soap:encodingStyle="https://schemas.xmlsoap.org/soap/encoding/"> <tnsTypes:DocumentEncoded> <address href="#1" /> <useZipPlus4>boolean</useZipPlus4> </tnsTypes:DocumentEncoded> <tnsTypes:Address id="1"> <Street id="2">string</Street> <City id="3">string</City> <Zip id="4">string</Zip> </tnsTypes:Address> </soap:Body> </soap:Envelope>
Vea también
Referencia
SoapDocumentMethodAttribute
SoapRpcMethodAttribute