2008-09-30 36 views
15

Tengo una situación en la que necesito acceder a un servicio web SOAP con seguridad WSE 2.0. Tengo todos los proxies # c generados (que se derivan de Microsoft.Web.Services2.WebServicesClientProtocol), estoy solicitando el certificado, pero cuando llamo un método consigo un error:Cómo resolver el estado HTTP 405 "Método no permitido" al llamar a Servicios web

System.Net.WebException : The request failed with HTTP status 405: Method Not Allowed. 
    at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall) 
    at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters) 

tengo He hecho algunas búsquedas en Google y parece que este es un problema de configuración del servidor. Sin embargo, este servicio web se utiliza muchos clientes sin ningún problema (el servicio web es proporcionado por un Telecom New Zealand, por lo que está destinado a ser configurado correctamente. Creo que está escrito en Java)

¿Alguien puede arrojar algo de luz sobre este ¿problema?

Respuesta

18

Bien, encontré cuál era el problema. Intenté llamar a una url .wsdl en lugar de .asmx url. Doh!

+0

e intenté llamar sin el nombre de servis (x.asmx), dejé la URL solo con el directorio base, gracias – mkb

0

hmm ¿esos otros clientes también usan C# /. NET?

Método no permitido -> ¿podría ser este un servicio REST, en lugar de un servicio web SOAP?

+0

no saben si rclients othe también están utilizando .NET. Comprobará es un servicio web SOAP. – Muxa

+0

Si se generaron los proxies de WSDL, entonces será un servicio web SOAP. – Kev

4

que tenían el mismo problema, pero los detalles eran diferentes:

la URL que estábamos usando no tenía el (.asmx) parte del archivo. Llamar a la URL en un navegador estaba bien. También funcionó en un cliente simple configurando la URL a través de Visual Studio. ¡Pero no funcionó configurando la URL de forma dinámica! Dio el mismo error 405.

Finalmente, encontramos que agregar la parte del archivo a la Url del servicio web solucionó el problema. ¿Quizás un error de .Net framework?

4

Encontré esto debido a que WCF no se instaló en IIS. Lo principal es que la extensión .svc debe asignarse en IIS See MSDN here.. Use la herramienta ServiceModelReg para completar la instalación. Siempre querrá verificar que WCF está instalado y .svc está asignado en IIS cada vez que obtiene una nueva máquina o reinstala IIS.

0

MethodNotAllowedEquivalente al estado HTTP 405. MethodNotAllowed indica que el método de solicitud (POST o GET) no está permitido en el recurso solicitado.

El problema está en su enpoint uri no está completo o correcto se refiere a wcf - .scv Compruebe su proxy.enpoint o wcf client.enpoint uri es correcto.

0

En mi caso, el problema fue que la aplicación de configuración se formó incorrectamente/llamada: en la configuración la URL del servicio fue el uso de "localhost" como nombre de dominio, pero el nombre real, se diferenció de la URL llamé :(así que cambié la "localhost" en la configuración de DOMAINNAME thah que utilizo en el URL. Ese `todo!

Cuestiones relacionadas