Ho 4 portali (WW, UE, AU, USA), ognuno di essi ha il proprio servizio Web (tramite PHP che significa che non ho il controllo).Errore XML durante la chiamata al servizio web
Per questi 4 servizi Web, ho 4 client (generato da VS.Net Aggiungi riferimento Web).
C'è un metodo chiamato CommonMethod
è lo stesso su tutti i servizi Web, restituisce un oggetto di tipo CommonClass
.
- Quando chiamo che il metodo (utilizzando classe proxy UE) sto ottenendo un InvalidOperationException
There is an error in XML document (2, 615).
, e l'InnerException dice "Impossibile assegnare oggetto di tipo NS.com.AU.CommonClass ad un oggetto di tipo NS.com. EU.CommonClass. ". - Quando chiamo quel metodo (utilizzando la classe proxy US) ricevo un InvalidOperationException
There is an error in XML document (2, 615).
, e InnerException dice "Impossibile assegnare l'oggetto di tipo NS.com.AU.CommonClass a un oggetto di tipo NS.com.US.CommonClass . ". - Quando chiamo quel metodo (utilizzando la classe proxy AU), non viene generata alcuna eccezione.
- Quando chiamo quel metodo (utilizzando la classe proxy WW) sto ottenendo un InvalidOperationException
There is an error in XML document (2, 615).
, e InnerException dice "Impossibile assegnare l'oggetto di tipo NS.com.AU.CommonClass a un oggetto di tipo NS.com.WW.CommonClass . ".
ho cercato nel web per tale errore, beh è XML in modo un sacco di roba irrilevante si avvicina e non riusciva a trovare qualcosa di utile.
Ora ho notato che i 4 servizi Web utilizzano lo stesso spazio dei nomi nei documenti WSDL (xmlns: tns = "urna: rambo.com: RamboComApi"). Può essere questa la fonte di confusione e eccezione di tipo casting? Devo dire agli autori dei servizi web di scegliere diversi namespace per ogni servizio web?
Sembra che il codice stia creando un tipo di oggetto NS.com.AU.CommonClass e l'unica classe proxy che ha un tipo corrispondente è la classe proxy AU. Tutti gli altri si lamentano che stai cercando di assegnare NS.com.AU.CommonClass a NS.com.EU.CommonClass, NS.com.US.CommonClass o NS.com.WW.CommonClass.Se i loro WSDL sono identici, dovresti essere in grado di utilizzare la stessa classe proxy ma solo modificare l'URL di destinazione. – Dijkgraaf
Grazie, intendi qualcosa come [questo] (http://stackoverflow.com/a/16407382/502436)? –
No, non dovresti cambiare gli spazi dei nomi, basta usare il proxy che hai creato per AU e basta impostare l'URL di destinazione per chiamare il servizio web appropriato. – Dijkgraaf