Escribí el servicio REST usando ASP.NET Web API. Estoy intentando enviar una solicitud HttpDelete, sin embargo, aparece el siguiente error:
405: el verbo HTTP utilizado para acceder a esta página no está permitido
Creo que estoy cerca de la solución, descubrí que debería habilitar la administración remota de IIS, ir a la sección Handler Mappings y agregar el verbo DELETE a la posición adecuada ... pero el problema es que hay muchas posiciones diferentes en la lista ... (algo como aquí: http://www.somacon.com/p126.php ).
¿Cuál debería editar? Algunos de ellos no tienen extensión, por ejemplo, "ExtensionUrlHandler-Integrated-4.0" y le agregué el verbo DELETE, pero todavía no funciona ...
Fue solo un tiro en la oscuridad para modificar eso, así que ¿debería modificar una posición diferente? ¿Si es así, Cuál? ¿O tal vez hay algo más de lo que debería hacer?
El mismo servicio web funciona perfectamente bien en mi servicio local, así que supongo que el problema está en el IIS remoto ...
Saludos
Respuestas:
La causa común de este error es WebDAV . Asegúrate de desinstalarlo.
fuente
No necesita desinstalar WebDAV, simplemente agregue estas líneas al web.config:
fuente
Cambie su archivo Web.Config como se muestra a continuación
fuente
Cambie su archivo Web.Config como se muestra a continuación. Actuará como un encanto.
En el nodo,
<system.webServer>
agregue la parte inferior del códigoDespués de agregar, su Web.Config se verá a continuación
fuente
Tuve este problema y resolví lo siguiente:
Seleccione el sitio de backend
en la vista de características: abrir Handler Mapping
fuente
Si ninguna de las soluciones anteriores resolvió su problema como en mi caso (todavía atascado con mi módulo RestClient frente a 405) intente solicitar su Api con una herramienta como Postman o Fiddler. Quiero decir que el problema puede estar en otra parte, como una solicitud con formato incorrecto.
Descubrí que mi módulo RestClient estaba pidiendo un 'Poner' con un parámetro de identificación no bien formateado:
en vez de
Increíblemente, la solicitud con formato incorrecto devuelve 405 - Método no permitido (IIS 7.5)
fuente
Poco común, pero puede ayudar a algunos.
Obtuvimos un 'Método no permitido' 405, en un método decorado con HttpPut.
Nuestro problema parece ser poco común, ya que accidentalmente usamos el atributo [HttpPut] de System.Web.Mvc y no System.Web.Http
La razón es que resharper sugirió la versión .Mvc, donde, como suele ser habitual, ya se hace referencia a System.Web.Http cuando se deriva directamente de ApiController , estábamos usando una clase que extendía ApiController.
fuente
Sucedió esto (método 405 no permitido) cuando el método de publicación de la API web al que estaba llamando tenía tipos primitivos para los parámetros, en lugar de un tipo complejo al que se accedía desde el cuerpo. Al igual que:
Esto funcionó:
Esto no lo hizo:
fuente
Este error proviene del controlador de archivos estáticos, que de forma predeterminada no filtra ningún verbo, pero probablemente solo puede tratar con HEAD y GET.
Y esto se debe a que ningún otro manejador se acercó al plato y dijo que podían manejar DELETE.
Dado que está utilizando WEBAPI, que debido al enrutamiento no tiene archivos y, por lo tanto, extensiones, es necesario agregar las siguientes adiciones a su archivo web.config:
Obviamente, lo que se necesita depende del modo clásico frente al modo integrado, y el modo clásico depende del valor de bits. Además, se ha agregado el encabezado OPTIONS para el procesamiento de CORS, pero si no lo hace, no lo necesita.
Para su información, su web.config es la versión local de la aplicación (o directorio de la aplicación) cuyo nivel superior es applicationHost.config.
fuente
Si es IIS 8.0, compruebe si la activación HTTP está habilitada. Administrador del servidor -> IIS -> Administrar (ver arriba a la derecha) -> Agregar roles y características -> ... -> acceder a la configuración de WCF y luego seleccionar Activación HTTP.
fuente
En nuestro caso, el problema fue con el inicio de sesión federado entre un sitio .Net y ADFS. Al redirigir a los ADFS punto final el
wctx
parámetro necesita los tres parámetros para elWSFederationAuthenticationModule.CreateSignInRequest
método:rm
,id
yru
¡Gracias a Guillaume Raymond por la sugerencia de verificar los parámetros de URL!
fuente
Además de todas las soluciones anteriores, compruebe si tiene el "
id
" o cualquier parámetro personalizado definido en elDELETE
método coincide con la configuración de la ruta.Si acierta con errores 405 repetidos, es mejor restablecer la firma del método a los valores predeterminados y probar.
La configuración de ruta por defecto buscará
id
en la URL. Entonces, el nombre del parámetroid
es importante aquí a menos que cambie la configuración de ruta en laApp_Start
carpeta.Puede cambiar el tipo de datos del
id
aunque.Por ejemplo, el método siguiente debería funcionar bien:
Nota: Asegúrese también de pasar los datos a través de la URL, no el método de datos que llevará la carga útil como contenido del cuerpo.
Ejemplo:
Espero eso ayude.
fuente
Agregaré para aquellos que se atascan al intentar ejecutar
PHP
(Laravel
en tal caso) u otraIIS
situación de alojamiento única con el405 error
, que debe cambiarverbs
el controlador para esa situación específica ... así que ya que estaba usandoPHP
fui a elPHP
controlador y en la pestaña,Request Restrictions
luegoVerbs
, agregue elverbs
que necesita. Esto era todo lo que sea necesario para agregar a laweb.config
de permitirCORS
enLaravel
.fuente
Nada de lo anterior funcionó para mí y estaba solucionando problemas al usar una página de soporte ( https://support.microsoft.com/en-us/help/942051/error-message-when-a-user-visits-a-website -que-está-alojado-en-un-servidor) luego comparé el archivo de host de la aplicación con una de las copias de trabajo y parece que me faltaban un montón de controladores y cuando los agregué nuevamente al host de la aplicación, comenzó a funcionar. Me faltaba todo esto
fuente