2011-09-19 20 views

Respuesta

17

Esto normalmente significa que el marco SOAP no pudo encontrar la operación que debería invocarse a través de esta solicitud. Generalmente, un marco SOAP inspecciona el mensaje para encontrar indicadores sobre cómo enrutar el mensaje a la operación. Las razones de este error son principalmente problemas de configuración (diferentes espacios de nombres, diferentes codificaciones (RPC vs. doc/lit), uso de WS-Addressing vs. plain SOAP, etc.)

+0

Si está usando Visual Studio, aquí hay una solución rápida.Haga clic con el botón derecho en el servicio web en la carpeta Referencias web en el Explorador de soluciones, seleccione Actualizar el servicio web. Espere a que VS complete el proceso y ha terminado –

+0

En mi caso el problema fue que el '' referenciado en '' del '' al que se hace referencia en '' del '' no tenía el mismo ** espacio de nombre ** como ''. También debe tener el mismo nombre para evitar el ajuste de los parámetros de entrada. – msa

14

Tuve un problema similar y tuve dificultades, buscando en Google 1 día. Pero fue un simple error que en lugar de:

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

Debe ser

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

no había comprobado mi WSDL con claridad.

+1

Sí, esos son desagradables. También un error común es pasar por alto la diferencia entre http y https en URI de espacio de nombres. – vanto

2

En mi caso lo resolví asegurándome de que mi archivo de configuración, ya sea app.config o web.config, dependiendo de su cliente, tiene el punto final correcto. Tenía una dirección incorrecta en mi punto final. Lo cambié y funcionó bien.

1

También perdí un día con este problema, aunque con una causa raíz diferente.

En nuestro caso, dos URL de punto final similares se mezclaron en el archivo de propiedades. Ambos servicios estaban presentes y en ejecución, pero los WSDL no coincidían, por lo que en lugar de una ConnectionException, recibíamos esta SOAPFaultException: "No se puede encontrar el método de envío".

0

Mi cincuenta centavo, recibí el mismo mensaje de error pero mi caso era diferente de todo lo anterior, por lo que espero que pueda ayudar a alguien.

Tenía el archivo .wsdl, que quedó obsoleto sin mi conocimiento cuando colegas del otro lado de ws renombraron algún elemento. Desafortunadamente, el cambio no era visible cuando comparaba .wsdl con el suyo porque el archivo .wsdl tenía una importación .xsd que en realidad contenía el elemento renombrado. ¡Después de encontrar el cambio, actualicé mi archivo .xsd y tada! el error se fue y funcionó.

0

En mi caso, la siguiente excepción estaba tirando Incluso he suministra todos los parámetros

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

Después golpeando mi cabeza unas horas, sólo añadir un \ al inicializar SoapClient resolvió el problema.

Desde:

$client = new SoapClient($soapURL); 

Para:

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

que tenía el mismo problema en mi aplicación .NET, en mi caso la configuración url mismo que "http://x-xxx-xx-xx-01:8080//TestProject/testproject?wsdl" (url ficticio) resolvió el problema en el siguiente código.

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 
     } 

Aquí, WSTestProject es el espacio de nombres WebService y TestProject es el método web.

Cuestiones relacionadas