Condividi tramite


Procedura: Controllare se i parametri del metodo di servizio Web sono racchiusi in un elemento supplementare.

I parametri o il valore restituito per un metodo del servizio Web possono essere incapsulati automaticamente all'interno di un elemento XML padre nell'elemento Body di un messaggio SOAP, oppure associati direttamente agli elementi di messaggio part in un documento WSDL (Web Services Description Language). .NET Framework fa riferimento a queste due possibilità, rispettivamente, come wrapped o bare e ne esercita il controllo mediante attributi.

Per specificare l'incapsulamento dei parametri all'interno di uno elemento XML

  • Applicare un attributo SoapDocumentMethod al metodo nella classe proxy eseguendo la chiamata al metodo del servizio Web mediante impostazione della proprietà ParameterStyle su Wrapped.

    Nell'esempio di codice seguente la proprietà ParameterStyle viene impostata su Wrapped. Lo stile di formattazione dei parametri viene inoltre impostato su Literal.

    [SoapDocumentMethod("https://www.contoso.com/DocumentWrappedLiteral",
                        RequestNamespace="https://www.contoso.com",
                        ResponseNamespace="https://www.contoso.com", 
                        Use=SoapBindingUse.Literal, 
                        ParameterStyle=SoapParameterStyle.Wrapped)]
    public string DocumentWrappedLiteral(Address1 address, 
                                         bool useZipPlus4) {
    
    <SoapDocumentMethod("https://www.contoso.com/DocumentWrappedLiteral", _
                        RequestNamespace:="https://www.contoso.com", _
                        ResponseNamespace:="https://www.contoso.com", _
                        Use:=SoapBindingUse.Literal, _
                        ParameterStyle:=SoapParameterStyle.Wrapped)> _
    Public Function DocumentWrappedLiteral(ByVal address As Address1, _
                                 ByVal useZipPlus4 As Boolean) As String
    

    La parte XML della richiesta SOAP incapsula i parametri in un elemento denominato per impostazione predefinita in base al metodo del servizio Web.

    <?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>
        <DocumentWrappedLiteral xmlns="https://www.contoso.com">
          <MyAddress>
            <Street>string</Street>
            <City>string</City>
            <Zip>string</Zip>
          </MyAddress>
          <useZipPlus4>boolean</useZipPlus4>
        </DocumentWrappedLiteral>
      </soap:Body>
    </soap:Envelope>
    

    La parte XML della risposta SOAP incapsula i parametri out per il metodo del servizio Web , inclusi i risultati contenuti all'interno di un elemento. Per impostazione predefinita, il nome dell'elemento di incapsulamento è il nome del metodo del servizio Web con l'aggiunta della Response.

    <?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>
        <DocumentWrappedLiteralResponse xmlns="https://www.contoso.com">
          <DocumentWrappedLiteralResult>string
          </DocumentWrappedLiteralResult>
        </DocumentWrappedLiteralResponse>
      </soap:Body>
    </soap:Envelope>
    

Per indicare che i parametri sono direttamente successivi all'elemento Body

  • Applicare un attributo SoapDocumentMethod al metodo nella classe proxy eseguendo la chiamata al metodo del servizio Web mediante impostazione della proprietà ParameterStyle su Bare.

    L'esempio seguente, generato da Wsdl.exe imposta ParameterStyle su Bare e lo stile di formattazione dei parametri su Literal. Poiché lo spazio dei nomi non può essere specificato in un elemento che incapsula tutti i parametri, deve essere indicato singolarmente per ogni parametro e valore restituito. Per eseguire questa operazione, applicare un attributo XmlElementAttribute a ogni parametro e al valore restituito nonché impostare la proprietà Namespace.

    [SoapDocumentMethod(
         "https://www.contoso.com/DocumentBareLiteral",
         Use=SoapBindingUse.Literal,
         ParameterStyle=SoapParameterStyle.Bare)]
    [return: XmlElement(Namespace="https://www.contoso.com",                    IsNullable=true)]
    public string DocumentBareLiteral(
       [XmlElement(Namespace="https://www.contoso.com",
                         IsNullable=true)] 
       Address1 MyAddress, 
       [XmlElement(Namespace="https://www.contoso.com",
                IsNullable=false)] 
       bool useZipPlus4) {
    
    <SoapDocumentMethod( _
         https://www.contoso.com/DocumentBareLiteral", _
         Use:=SoapBindingUse.Literal, _
         ParameterStyle:= SoapParameterStyle.Bare)> _
    Public Function DocumentBareLiteral( _
       ByVal <XmlElement([Namespace]:="https://www.contoso.com", _
                          IsNullable:=true)> _
       MyAddress As Address1, _
       ByVal <XmlElement([Namespace]:="https://www.contoso.com", _
                          IsNullable:=false)> _
       useZipPlus4 As Boolean) _
       As <XmlElement([Namespace]:="https://www.contoso.com", _
                      IsNullable:=true)> _
       String
    

    Gli elementi XML a cui sono associati i parametri all'interno della richiesta SOAP sono direttamente successivi all'elemento Body e ognuno di essi specifica uno spazio dei nomi.

    <?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>
        <MyAddress xmlns="https://www.contoso.com">
          <Street>string</Street>
          <City>string</City>
          <Zip>string</Zip>
        </MyAddress>
        <useZipPlus4 xmlns="https://www.contoso.com">boolean</useZipPlus4>
      </soap:Body>
    </soap:Envelope>
    

    I parametri out, incluso il valore restituito, sono associati agli elementi XML successivi all'elemento Body all'interno della risposta SOAP. Per impostazione predefinita, il nome dell'elemento del valore restituito è il nome del metodo del servizio Web con il suffisso Result.

    <?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>
        <DocumentBareLiteralResult xmlns="https://www.contoso.com">
           string</DocumentBareLiteralResult>
      </soap:Body>
    </soap:Envelope>
    

Vedere anche

Riferimenti

SoapDocumentMethodAttribute
SoapRpcMethodAttribute

Altre risorse

Personalizzazione della formattazione dei messaggi SOAP

Footer image

Copyright © 2007 Microsoft Corporation. Tutti i diritti riservati.