¿Cómo habilito HTTP PUT y DELETE para ASP.NET MVC en IIS?

Utilizo HTTP PUT y DELETE en mi aplicación ASP.NET MVC3. Cuando lo ejecuto en local, todo funciona correctamente; Pero cuando publico la aplicación en el servidor, estos métodos no funcionan.

¿Hay alguna configuración especial para permitir que un servidor web admita solicitudes PUT y DELETE ? Estoy usando alojamiento compartido con IIS 7.5.

ACTUALIZAR:

DELETE solicitudes PUT y DELETE en el IIS manager . PUT comando PUT funciona bien. Pero DELETE todavía no funciona. Creo solicitudes de jQuery :

Estoy en esta página:

 http://domain.com/dashboard/edit-site/103323/links/ 

y mi llamada ajax es:

 $.ajax({ // url: same as page-url, cache: false, type: 'DELETE', data: { linkid: $(link).data("linkid") }, beforeSend: function () { // doing something in UI }, complete: function () { // doing something in UI }, success: function (data) { // doing something in UI }, error: function () { // doing something in UI } }); 

Esto creará una solicitud como esta:

 Accept: */* Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Origin: http://domain.com Referer: http://domain.com/dashboard/edit-site/103323/links/ User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1 X-Requested-With: XMLHttpRequest 

Con este Form Data :

 linkid:104044 

Vaya a Asignaciones de manejador en su Administrador de IIS . Encuentra ExtensionlessUrlHandler-Integrated-4.0 , ExtensionlessUrlHandler-Integrated-4.0 doble clic en él. Haga clic en el botón Restricciones de solicitud … y en la pestaña Verbos, agregue DELETE y PUT . enter image description here


EDITAR: posible problema del editor WebDav

Mencionaste en una publicación eliminada que estabas ejecutando en un servidor 2008 ¿verdad? Intente eliminar la función webDav o desactívela de la config de su sitio: en la sección system.webServer -> modules , elimine el módulo WebDAVModule :

         

Si obtiene un error de seguimiento en su entorno de producción en asp.net web api en PUT o DELETE aunque estos métodos funcionan perfectamente localmente.

405 – El verbo http utilizado para acceder a esta página no está permitido.

Simplemente agregue las siguientes configuraciones en la web.config de su servidor

             

Causa: el módulo webDAV bloquea los métodos PUT / DELETE de forma predeterminada. Por lo tanto, primero elimine este módulo y su controlador. Primero eliminamos cualquier configuración existente de ExtensionlessUrlHandler-Integrated-4.0 y lo agregamos con la path y los verbs deseados.

Solo necesita agregar las siguientes líneas de código en su web.config

            

Y

       

Finalmente encuentro la respuesta fluctuante. Cambié la llamada jQuery a la siguiente y ahora está funcionando bien.

 $.ajax({ url: this.href + "?linkid=" + $(link).data("linkid"), cache: false, type: 'DELETE', // data: { linkid: $(link).data("linkid") }, beforeSend: function () { // doing something in UI }, complete: function () { // doing something in UI }, success: function (data) { // doing something in UI }, error: function () { // doing something in UI } }); 

¿Tiene alguna explicación de por qué una llamada DELETE , no puede tener Form Data ? Mientras que en el local, ¿tenía y funcionaba bien?