2012-09-05 15 views
9

Estoy tratando de usar PUT en una aplicación MVC 4 y obtengo un error 405.MVC 4. IIS 7.5 PUT que devuelve 405

En mi enrutamiento tengo una restricción en la ruta para permitir PUT y POST, POST funciona el punto final, PUT falla con un 405.

He seguido el consejo aquí y aquí ASP.NET Web API returns 404 for PUT only on some serversASP.NET MVC got 405 error on HTTP DELETE request?

También he eliminado WeDAV de IIS, pero todavía estoy recibiendo el 405. ¿Alguien tiene alguna otra sugerencia?

También estoy teniendo exactamente el mismo problema en IIS 8 (con Visual Studio 2012), para la que he seguido este consejo ASP.NET Web API - PUT & DELETE Verbs Not Allowed - IIS 8 y sigue sin suerte

Respuesta

1

Como he dicho anteriormente que estoy usando el WebAPI y parece que WebAPI es 'quisquilloso' sobre qué verbos se asignan a qué métodos. Terminé teniendo que agregar los atributos [HttpXXX] (HttpPut, Get, Delete y Post) a los métodos apropiados para que la ruta funcionara como esperaba.

25

Mi proveedor de hosting NO pudo desinstalar WebDAV ya que esto afectaría a todos.

Esto, runAllManagedModulesForAllRequests = "true", funcionó pero no se recomendó.

Muchas correcciones incluían la eliminación del módulo para WebDAVModule, pero aún no funcionaba. Quité el controlador también, y finalmente pude usar todos los verbos POST GET PUT DELETE.

Elimina WebDAVModule y WebDAV en módulos y controladores.

<modules> 
    <remove name="WebDAVModule" /> 
</modules> 
<handlers> 
    <remove name="WebDAV" /> 
</handlers> 
+1

Mi Web. config ya tenía el runAllManagedModulesForAllRequests = "true". Agregar las líneas eliminadas de WebDAV arriba funcionó muy bien para mí. – Jbecwar

+0

Pensé que ya había hecho esto, pero solo eliminé el controlador, no el módulo. ¡Gracias! –

+0

Esto funciona para mí. +1 –

0

Poniendo mis 2 centavos en ... Al hacer clic en mi sitio en IIS mostraron 'WebDAV Reglas de Autor' como el texto correspondiente a 'IIS'. Al hacer doble clic en "La función WebDAV se ha deshabilitado". alerta a la derecha y había un enlace para 'Habilitar WebDAV' pero todavía no funcionaba. Seguí la sugerencia de Stanomatic anteriormente, la sección manipuladores no importaba, y mis módulos veía así:

<modules runAllManagedModulesForAllRequests="true" /> 

Acabo de añadir la opción Quitar en ella y que fija mi problema:

<modules runAllManagedModulesForAllRequests="true"> 
    <remove name="WebDAVModule" /> 
</modules> 
Cuestiones relacionadas