Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I enable HTTP PUT and DELETE for ASP.NET MVC in IIS?

I use HTTP PUT and DELETE in my ASP.NET MVC3 application. When I run it in local, every thing works correctly; But when I publish the application to the server, these methods do not work.

Are there any special settings for enable a web server to support PUT and DELETE requests? I'm using shared hosting with IIS 7.5.

UPDATE:

I enable PUT and DELETE requests in IIS manager. PUT command work fine. But DELETE still not works. I create requests by jQuery:

I'm in this page:

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

and my ajax call is:

$.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     } }); 

This will create a request like this:

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 

With this Form Data:

linkid:104044 
like image 917
amiry jd Avatar asked Sep 15 '12 19:09

amiry jd


People also ask

How do I enable Post in IIS?

From inside the IIS management screen right click on your website or virtual directory. Go to Properties then go to the Home Directory or Virtual Directory tab and click on the Configuration button. From there you can add/update extensions and what Verbs are accepted.


2 Answers

Go to Handler Mappings in your IIS Manager. Find ExtensionlessUrlHandler-Integrated-4.0, double click it. Click Request Restrictions... button and on Verbs tab, add both DELETE and PUT. enter image description here


EDIT: Possible WebDav Publisher issue

You've mention on a deleted post you were running on a 2008 server right? Try removing webDav role, or disable it from your site config: on system.webServer -> modules section, remove WebDAVModule module:

<system.webServer>   <modules>     <remove name="WebDAVModule" />   </modules>   <handlers>     <remove name="WebDAV" />   </handlers> </system.webServer> 
like image 128
danielQ Avatar answered Oct 13 '22 01:10

danielQ


If you are getting following error in your production environment in the asp.net web api on PUT or DELETE though these methods are working fine locally.

405 - http verb used to access this page is not allowed.

Just add following settings in your server's web.config

<system.webServer>     <handlers>       <remove name="WebDAV" />       <remove name="ExtensionlessUrlHandler-Integrated-4.0" />       <remove name="OPTIONSVerbHandler" />       <remove name="TRACEVerbHandler" />       <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />     </handlers>     <modules>         <remove name="WebDAVModule" />     </modules> </system.webServer> 

Cause: webDAV module blocks PUT/DELETE methods by default. So first remove this module and its handler. We first remove any existing ExtensionlessUrlHandler-Integrated-4.0 settings and add it with desired path and verbs.

like image 20
Heera Jaiswal Avatar answered Oct 13 '22 00:10

Heera Jaiswal