2010-03-05 15 views
5

Mi sto connettendo a un endpoint di terze parti tramite WCF e ho un problema. Lo schema per la busta SOAP generato da WCF non è compatibile con il punto finale.Come si modifica lo schema Envelope SOAP in WCF?

Attualmente WCF sta generando in questo modo:

<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing"> 

Ma deve essere questo:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:a="http://www.w3.org/2005/08/addressing"> 

Ho provato questo in soapUI per confermare questo è il problema, ma come posso controllare questo in WCF? Ho usato l'opzione Aggiungi riferimento al servizio in Visual Studio per generare il servizio.

Qualche idea?

Grazie in anticipo.

Andy

+0

Hai provato a creare il proxy usando svcutil.exe? – Kangkan

risposta

15

Molto probabilmente, avete un problema con la versione SOAP. Che legame stai usando ??

basicHttpBinding default SOAP 1.1, mentre wsHttpBinding default SOAP 1.2

Si tratta di SOAP 1.1 (impostazione predefinita in basicHttpBinding):

<SOAP-ENV:Envelope 
    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
    SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> 

mentre questo è SOAP 1.2 (impostazione predefinita in wsHttpBinding):

<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 

Soluzioni possibili:

1) o si può semplicemente cambiare attacchi e questo è tutto quello che c'è - è necessario fare in modo di controllare le impostazioni di sicurezza e così via (che si differenziano tra ricerca di base e wsHttpBinding)

o

2) si devi creare il tuo binding personalizzato e specificare esplicitamente la versione SOAP che ti serve

+0

Che ha funzionato a meraviglia, grazie! – andypike

+0

Oh! è davvero grandioso – Kangkan

+0

Quale soluzione ha funzionato per te? Ho lo stesso problema, ma la soluzione 1 non è un'opzione per me. Devo davvero creare il mio binding personalizzato? –

Problemi correlati