Share via


Procedura: formattazione del parametro di controllo e del valore restituito per un metodo del servizio Web

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

Per la formattazione di elementi XML che corrispondono a parametri del metodo e a valori restituiti, o utilizzi, WSDL (Web Services Description Language) fornisce due opzioni: SOAP encoded e literal. .NET Framework controlla queste opzioni al livello di codice utilizzando gli attributi. Anche se ASP.NET fornisce un'architettura estesa per controllare come è formattato l'XML, l'ordine nel quale sono serializzati i parametri non è garantito.

Per specificare che il parametro di formattazione sia Literal

  1. Applicare un attributo SoapDocumentMethod a un metodo nella classe proxy, impostando la proprietà Use su SoapBindingUse.Literal.

    L'enumerazione SoapBindingUse specifica gli stili di formattazione dei parametri disponibili per un servizio Web creato utilizzando 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
    

    Segue la parte XML della richiesta SOAP al metodo del Servizio Web DocumentLiteral. I parametri risiedono all'interno dell'elemento Body e sono codificati come documenti XML autocontenuti, poiché si riferiscono a uno schema 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>
    

Per specificare che il parametro di formattazione sia Encoded

  1. Applicare un attributo SoapDocumentMethod o un attributo SoapRpcMethod al metodo nella classe proxy, impostando la proprietà Use su SoapBindingUse.Encoded.

    A differenza dello stile di formattazione con parametro Literal, lo stile di formattazione con parametro Encoded può essere utilizzato con entrambi i metodi di formattazione stili del servizio Web. Per ulteriori informazioni sui metodi di formattazione stili dei servizio Web, vedere Supporto .NET Framework per i formati 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
    

    Segue la parte XML della richiesta SOAP al metodo del servizio DocumentEncoded. Notare come i parametri siano rappresentati in modo molto diverso dallo stile di formattazione Literal, poiché sono formattati utilizzando le regole di codifica delineate nella sezione 5 della specifica SOAP. Prestare particolare attenzione al parametro address che non è un semplice tipo di dati.

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

Vedere anche

Riferimento

SoapDocumentMethodAttribute
SoapRpcMethodAttribute

Altre risorse

Personalizzazione della formattazione dei messaggi SOAP