Salve Ragazzi,
chiedo aiuto a qualche uomo di buona volontà che all'interno della community ha più esperienza di me con l'uso dei webservice e soprattutto abbia voglia e tempo per darmi un suggerimento utile a risolvere un problema su cui sto perdendo la testa da qualche giorno.

Ho la necessità di utilizzare un servizio SOAP che referenzio all'interno del mio applicativo e che serve ad inserire in un database i nominativi dei Clienti di un gestionale. Il WSDL espone un metodo che serve a compiere quest'azione (inserisciCliente) e che accetta come parametri di ingresso due oggetti: un header (contenente alcuni valori necessari ad identificare l'azione che si vuole compiere) e un oggetto di tipo "cliente" che contiene tutti i campi utili ad identificare i dati del cliente (nome, cognome, indirizzo, ecc ecc).

IL WSDL è il seguente:

codice:
<?xml version = '1.0' encoding = 'UTF-8'?><definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://URL/" name="GestioneClientiWSTrs" targetNamespace="http://URL/">
    <types>
        <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soap11-enc="http://schemas.xmlsoap.org/soap/encoding/" targetNamespace="http://URL/" elementFormDefault="qualified">
            <complexType name="HeaderOperazione">
                <sequence>
                    <element name="val_01" type="string"/>
                    <element name="val_02" type="string"/>
                    <element name="val_03" type="string"/>
                </sequence>
            </complexType>
            <complexType name="EsitoBean">
                <sequence>
                    <element name="esito" type="int"/>
                    <element name="listaErrori" type="tns:ArrayOfMessaggioBean"/>
                    <element name="listaMessaggi" type="tns:ArrayOfMessaggioBean"/>
                </sequence>
            </complexType>
            <complexType name="ArrayOfMessaggioBean">
                <complexContent>
                    <restriction base="soap11-enc:Array">
                        <sequence>
                            <element name="item" type="tns:MessaggioBean"/>
                        </sequence>
                        <attribute ref="soap11-enc:arrayType" wsdl:arrayType="tns:MessaggioBean[]"/>
                    </restriction>
                </complexContent>
            </complexType>
            <complexType name="MessaggioBean">
                <sequence>
                    <element name="area" type="string"/>
                    <element name="codice" type="string"/>
                    <element name="descr" type="string"/>
                </sequence>
            </complexType>
            <complexType name="ArrayOfClienti">
                <complexContent>
                    <restriction base="soap11-enc:Array">
                        <sequence>
                            <element name="item" type="tns:Clienti"/>
                        </sequence>
                        <attribute ref="soap11-enc:arrayType" wsdl:arrayType="tns:Clienti[]"/>
                    </restriction>
                </complexContent>
            </complexType>
            <complexType name="Clienti">
                <complexContent>
                    <extension base="tns:ClienteDettaglio">
                        <sequence>
                            <element name="codiceStrongCliente" type="string"/>
                            <element name="codiceCliente" type="string"/>
                        </sequence>
                    </extension>
                </complexContent>
            </complexType>
            <complexType name="ClienteDettaglio">
                <sequence>
                    <element name="nome" type="string"/>
                    <element name="cognome" type="string"/>
                    <element name="codiceFiscale" type="string"/>
                    <element name="indirizzo" type="string"/>
                </sequence>
            </complexType>
            <complexType name="OutputInserisciCliente">
                <complexContent>
                    <extension base="tns:EsitoBean">
                        <sequence>
                            <element name="Clienti" type="tns:Clienti"/>
                        </sequence>
                    </extension>
                </complexContent>
            </complexType>
            <complexType name="InputInserisciCliente">
                <sequence>
                    <element name="cliente" type="tns:ClienteDettaglio"/>
                </sequence>
            </complexType>
        </schema>
    </types>
    <message name="GestioneClientiWSTrs_inserisciCliente">
        <part name="headerOperazione" type="tns:HeaderOperazione"/>
        <part name="theInput" type="tns:InputInserisciCliente"/>
    </message>
    <message name="GestioneClientiWSTrs_inserisciClienteResponse">
        <part name="result" type="tns:OutputInserisciCliente"/>
    </message>
    <portType name="GestioneClientiWSTrs">
        <operation name="inserisciCliente" parameterOrder="headerOperazione theInput">
            <input message="tns:GestioneClientiWSTrs_inserisciCliente"/>
            <output message="tns:GestioneClientiWSTrs_inserisciClienteResponse"/>
        </operation>
    </portType>
    <binding name="GestioneClientiWSTrsSoapHttp" type="tns:GestioneClientiWSTrs">
        <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
        <operation name="inserisciCliente">
            <soap:operation soapAction="http://URL"/>
            <input>
                <soap:body use="encoded" namespace="http://URL/" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" parts="headerOperazione theInput"/>
            </input>
            <output>
                <soap:body use="encoded" namespace="http://URL" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" parts="result"/>
            </output>
        </operation>
    </binding>
    <service name="GestioneClientiWSTrs">
        <port name="GestioneClientiWSTrsSoapHttpPort" binding="tns:GestioneClientiWSTrsSoapHttp">
            <soap:address location="http://URLSERVIZIO"/>
        </port>
    </service>
</definitions>

Per inserire un nuovo cliente uso una sintassi del genere:

codice:
mio.webservice.HeaderOperazione mioHead = new mio.webservice.HeaderOperazione();
mioHead.val_01 = "valore01";
mioHead.val_02 = "valore02";
mioHead.val_03 = "valore03";

mio.webservice.InputInserisciCliente ClienteInput = new mio.webservice.InputInserisciCliente();
ClienteInput.cliente = new it.istruzione.pubblica.wssidi1coll.ClienteDettaglio();


ClienteInput.cliente.nome = "Nome Cliente";
ClienteInput.cliente.cognome = "Cognome Cliente";
ClienteInput.cliente.codiceFiscale = "CODFIS";
ClienteInput.cliente.indirizzo = "Indirizzo Cliente";


mio.webservice.GestioneClientiWSTrs GestioneClienti = new mio.webservice.GestioneClientiWSTrs();
GestioneClienti.Credentials = new NetworkCredential("miousername", "miapassword");

A questo punto dovrei richiamare il metodo dell'oggetto GestioneClienti denominato InputInserisciCliente ​che a sua volta dovrebbe restituire un oggetto di tipo OutputInserisciCliente all'interno del quale si trovano valori come esito (di tipo int con 0 per azione non eseguita e 1 per azione eseguita) listaErrori e listaMessaggi (di tipo array). In poche parole la sintassi dovrebbe essere qualcosa del tipo:

codice:
mio.webservice.OutputInserisciCliente OutputCliente = GestioneClienti.InputInserisciCliente(mioHead, ClienteInput);

Fino a qui nessun problema, l'inserimento viene eseguito correttamente ma quando richiama ma quando richiamo i campi di OutputCliente con una sintassi del tipo

codice:
Response.Write(OutputCliente.Esito.Tostring()

i valori sono sempre nulli (il tipo int è sempre 0 e gli array sono sempre vuoti). Per essere sicuro che il webservice effettivamente restituisse il un XML contenente i dati ho provato ad usare uno sniffer (SOAPuI) ed infatti i valori di ritorno sono regolarmente presenti. Dove sbaglio???



Anticipatamente Grazie a tutti coloro che vorranno rispondermi e Tanti Auguri di Buon Fine 2013 e di uno Splendido 2014 a tutta la board!!

P.S.
Questo l'XML che visualizzo con SOAPuI

codice:
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns0="http://URL/">  <env:Body>
    <ns0:inserisciClienteResponse env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
      <result href="#ID1"/>
    </ns0:inserisciClienteResponse>
    <ns0:OutputInserisciCliente id="ID1" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns0:OutputInserisciCliente">
      <ns0:esito xsi:type="xsd:int">0</ns0:esito>
      <ns0:listaErrori href="#ID2"/>
      <ns0:listaMessaggi xsi:type="ns0:ArrayOfMessaggioBean" ans1:arrayType="ns0:MessaggioBean[0]" xsi:nil="1" xmlns:ans1="http://schemas.xmlsoap.org/soap/encoding/"/>
      <ns0:ClienteDettaglio href="#ID3"/>
    </ns0:OutputInserisciCliente>
    <ns0:ArrayOfMessaggioBean id="ID2" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ans1:Array" ans1:arrayType="ns0:MessaggioBean[1]" xmlns:ans1="http://schemas.xmlsoap.org/soap/encoding/">
      <item href="#ID4"/>
    </ns0:ArrayOfMessaggioBean>
    <ns0:ClienteDettaglio id="ID3" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns0:SedeSidi">
      <ns0:nome xsi:type="xsd:string">Nome Cliente</ns0:nome>
      <ns0:cognome xsi:type="xsd:string">Cognome Cliente</ns0:cognome>
      <ns0:idcliente xsi:type="xsd:string">ID Cliente</ns0:idcliente>
  </ns0:ClienteDettaglio>
    <ns0:MessaggioBean id="ID4" env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns0:MessaggioBean">
      <ns0:area xsi:type="xsd:string">AREA</ns0:area>
      <ns0:codice xsi:type="xsd:string">CODICE</ns0:codice>
      <ns0:descr xsi:type="xsd:string">TIPOERRORE</ns0:descr>
    </ns0:MessaggioBean>
</env:Body>
</env:Envelope>