2011-09-19 17 views

risposta

17

Ciò significa in genere che il framework SOAP non è stato in grado di trovare l'operazione che dovrebbe essere invocata tramite questa richiesta. Un framework SOAP tipicamente ispeziona il messaggio per trovare i puntatori su come indirizzare il messaggio all'operazione. I motivi di questo errore sono principalmente problemi di configurazione (diversi spazi dei nomi, diverse codifiche (RPC vs. doc/lit), utilizzo di WS-Addressing vs. SOAP semplice ecc.)

+0

Se si utilizza Visual Studio, ecco una soluzione rapida.Fare clic con il pulsante destro del mouse sul servizio Web nella cartella Riferimenti Web in Esplora soluzioni, selezionare Aggiorna servizio Web. Attendere VS per completare il processo e si è fatto –

+0

Nel mio caso il problema era che il '' si fa riferimento nel '' del '', che viene fatto riferimento nel '' del '' non ha avuto lo stesso ** spazio dei nomi ** come ''. Dovrebbe anche avere lo stesso nome per evitare di avvolgere i parametri di input. – msa

14

Ho avuto un problema simile e ho avuto difficoltà, googlando per 1 giorno. Ma è stato un semplice errore che invece di:

{http://ws.somecompany.com/services}ValidateUser 

Dovrebbe essere

{http://ws.somecompany.com/services/}ValidateUser 

non avevo controllato la mia WSDL chiaramente.

+1

Sì, quelli sono cattivi. Inoltre, un errore comune sta trascurando la differenza tra http e https negli URI dello spazio dei nomi. – vanto

2

Nel mio caso ho risolto facendo in modo che il mio file di configurazione app.config o web.config a seconda del client abbia l'endpoint corretto. Ho sbagliato indirizzo nel mio endpoint. L'ho cambiato e ha funzionato bene.

1

Ho anche perso un giorno a questo problema, anche se con una causa radice diversa.

Nel nostro caso, due URL endpoint simili erano stati confusi nel file delle proprietà. Entrambi i servizi erano presenti e in esecuzione, ma i WSDL non corrispondevano, quindi invece di una ConnectionException, ricevevamo questa eccezione SOAPFault: "Impossibile trovare il metodo di invio".

0

Il mio cinquanta centesimo, ho ricevuto lo stesso messaggio di errore ma il mio caso era ancora diverso da tutto quanto sopra, quindi speranzoso potrebbe aiutare qualcuno.

Avevo il file .wsdl, che è diventato obsoleto a mia insaputa quando i colleghi sull'altro lato di ws hanno rinominato qualche elemento. Sfortunatamente, il cambiamento non era visibile quando ho confrontato .wsdl con loro perché il file .wsdl aveva un'importazione .xsd che in realtà conteneva un elemento rinominato. Dopo aver trovato il cambiamento, ho aggiornato il mio file .xsd e tada! l'errore è andato e ha funzionato.

0

Nel mio caso, la seguente eccezione stava gettando persino ho fornito tutti i parametri

SoapFault exception: [S:Client] Cannot find dispatch method for {}parameters in 

Dopo sbattere la testa poche ore, solo l'aggiunta di un \ durante l'inizializzazione SoapClient ha risolto il problema.

Da:

$client = new SoapClient($soapURL); 

A:

$client = new \SoapClient($soapURL); 
0

Ho avuto lo stesso problema nel mio .NET, Nel mio caso l'impostazione url stesso di "http://x-xxx-xx-xx-01:8080//TestProject/testproject?wsdl" (URL fittizio) ha risolto il problema nel codice qui sotto.

Vb.Net

Dim rptGen as WSTestProject.testproject = Nothing 
rptGen = New WSTestProject.testproject With { 
     .Url = "http://x-xxx-xx-xx-01:8080//TestProject/testproject?wsdl", 
     .Timeout = 1200000 
     } 

Qui, WSTestProject è il namespace WebService e TestProject è il metodo web.

Problemi correlati