Utilizo el WebClient
tipo para cargar archivos * .cab a mi servidor. En el lado del servidor, registré un controlador HTTP para el archivo * .cab con el método PUT de la siguiente manera:
<add name="ResultHandler" path="*.cab" verb="PUT" type="FileUploadApplication.ResultHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode" />
Pero siempre obtengo el error "405 método no permitido". La respuesta dijo que los métodos permitidos son los siguientes:
Headers = {Allow: GET, HEAD, OPTIONS, TRACE
Content-Length: 1293
Content-Type: text/html
Date: Fri, 27 May 2011 02:08:18 GMT
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET}
Incluso si permito explícitamente el método PUT en el filtrado de solicitudes IIS para mi aplicación web, se sigue produciendo el mismo error.
Sospecho que este es un problema relacionado con IIS. Espero que alguien pueda aclararme esto.
Activé el seguimiento de solicitudes fallidas y obtuve la siguiente información:
Entonces, desinstalé WebDAVModule de mi IIS, todo está bien ahora ~
La función de seguimiento de IIS es muy útil.
fuente
Application_BeginRequest
método, como se menciona en esta respuesta stackoverflow.com/a/14631068/827168 . Pero su respuesta es mejor que todas las demás porque ayuda a detectar el problema en lugar de aplicar un parche aleatorio :)Handler "WebDAV" has a bad module "WebDAVModule" in its module list
.Tuve este problema con WebDAV cuando alojaba un proyecto MVC4 WebApi. Lo solucioné agregando esta línea al web.config:
Como se explica aquí: http://evolutionarydeveloper.blogspot.co.uk/2012/07/method-not-allowed-405-on-iis7-website.html
fuente
Tomado de aquí y funcionó para mí:
1. Vaya al Administrador de IIS.
2.Haga clic en su aplicación.
3. Vaya a "Asignaciones de manejadores".
4. En la lista de funciones, haga doble clic en "WebDAV".
5.Haga clic en "Solicitar restricciones".
6. En la pestaña "Verbos" seleccione "Todos los verbos".
7.Pulse OK.
fuente
Probé la mayoría de las respuestas y, desafortunadamente, ninguna funcionó.
Esto es lo que funcionó para mí. Hay 3 cosas que hacer con el sitio que desea PUT (seleccione el sitio):
Abra
WebDav Authoring Rules
y luego seleccione laDisable WebDAV
opción presente en la barra derecha.Seleccione
Modules
, busque elWebDAV Module
y elimínelo.Seleccione
HandlerMapping
, busque elWebDAVHandler
y elimínelo.Reinicie IIS.
fuente
PUT
comencé a trabajar.Eliminar el módulo WebDAV debería ser suficiente. Simplemente cambie su Web.config:
fuente
Lo mejor es simplemente eliminar la función WebDAV no utilizada. Vaya a Programas y características => Activar o desactivar las funciones de Windows y deshabilitar la publicación WebDAV en
Servicios de información de Internet => Servicios World Wide Web => Funciones HTTP comunes
fuente
Por alguna razón, marcar WebDAVModule como "eliminar" en mi web.config no fue suficiente para solucionar el problema en mi caso.
He encontrado otro enfoque que hizo a resolver el problema. Si estás en el mismo barco, prueba esto:
Esto evita que WebDAV rechace verbos que no admite, lo que permite que un PUT fluya a través de su controlador RESTful sin ser molestado.
fuente
Otro consejo mío. He usado PHP + IIS, y Handler Mappings para PHP no tenía el verbo PUT.
Vaya a IIS Manager-> Su sitio-> Handler Mappings-> PHPxx_via_FastCGI-> Request Restrictions-> Verbs, luego agregue PUT.
¡Eso es!
fuente
Otro módulo importante que necesita reconfigurarse antes de que PUT y DELETE funcionen es el verbo de opciones
También vea esta publicación: https://stackoverflow.com/a/22018750/9376681
fuente
Tuve los mismos problemas con PUT, PATCH y DELETE pero no tenía nada con WebDav instalado. La resolución 1 de este artículo finalmente me ayudó: http://support.microsoft.com/kb/942051
fuente
Estaba usando Angular 8 y era .NET core API. Agrego lo siguiente en mi archivo de servicio web.config. Eso resuelve mi error.
fuente
Para mí, este error no desaparecería y permitiría los métodos PUT, lo que sea que hice ... desinstalé webdav, coloqué la configuración en web.config para eliminar webdav de los controladores y módulos, y configuré PUT como un verbo permitido en los filtros de solicitud en iis .. y asegúrese de que las asignaciones del controlador iis que manejan la solicitud hayan configurado PUT.
Mi problema se debió finalmente a una mala instalación de las extensiones ASP.NET 4.5. Se eliminó todo lo relacionado con asp.net de las funciones y características del servidor. reiniciado. readded los roles y reiniciamos. todo funcionó con la configuración anterior.
--- Lo siguiente hará que PUT sea aceptado, pero lo enviará al administrador equivocado. - ignore lo siguiente
finalmente, la adición del verbo PUT como verbo permitido en la asignación del controlador TRACE en iis funcionó ... ya que habilité el rastreo de errores fallidos, y este verbo no permitía el verbo.
la última vez que tuve el mismo problema en el IIS de otro servidor, se debió a que faltaba una '/' al final de la URL, ya que estaba usando un controlador predeterminado sin usar el documento predeterminado probablemente y ahora me doy cuenta de eso ... así que verifique IIS asignaciones de manejadores si nada más ayuda.
fuente
Tuve este problema, pero nada relacionado con WebDAV fue el problema. En mi caso, el cliente estaba enviando un POST a www.myServer.com/api/chart. Esta llamada debe ser manejada por "ExtensionlessUrlHanlder-Integrated-4.0", sin embargo, de alguna manera se creó una estructura de archivo local en el directorio de mi servidor "... \ Server \ api \ chart \". Esto significaba que en su lugar se estaba llamando al controlador "StaticFile". Eliminar esos archivos locales finalmente resolvió el problema.
fuente
Esto es lo que funcionó para mí:
Abra IIS y haga clic en su sitio.
1 - Double Click on the Modules 2 - Right Click on WebDavPublishing and remove. 3 - Restart running WebSite.
fuente
Para Windows Server 2012 -> Vaya a Administrador del servidor -> Eliminar roles y características -> Roles del servidor -> Servidor web (IIS) -> Servidor web -> Características HTTP comunes -> Desmarque Publicación WebDAV y elimínelo -> Reiniciar servidor.
fuente
Si el grupo de aplicaciones IIS se ejecuta en modo clásico, asegúrese de tener lo siguiente en su web.config
fuente
En mi caso, había reubicado Web Deploy en otro puerto, que también era el puerto IIS (no el 80). No me di cuenta al principio, pero a pesar de que no hubo errores que se ejecutaran en el mismo puerto, parece que Web Deploy estaba respondiendo primero en lugar de IIS por alguna razón, causando este error. Acabo de mover mi enlace IIS a otro puerto y todo está bien. ;)
fuente
Para evitar que WebDav se habilite, elimine la siguiente entrada de ApplicationHost.config:
<add name="WebDAVModule" />
La entrada se encuentra en la sección de módulos.
Ubicación exacta de la configuración:
C:\Windows\System32\inetsrv\config\applicationHost.config
fuente
Tuve el mismo problema, con una API RESTful ejecutándose en aspnet core.
No quería desinstalar WebDAV y probé la mayoría de los remedios descritos anteriormente. Traté de establecer los verbos = "*" tanto en el sitio como en el servidor, pero sin éxito.
El truco que me sirvió fue el siguiente:
Administrador de IIS -> Sitios -> MySite -> HandlerMappings -> aspNetCore -> Editar
-> Solicitar restricciones -> Acceso -> Ninguno (era Script).
Después de eso, todo funcionó, incluso si reemplacé las opciones originales de WebDAV.
fuente