How do I enable HTTP PUT and DELETE for ASP.NET MVC in IIS?
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
.
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>
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
.
You just need to add the following lines of code in your web.config
<system.webServer>
<security>
<requestFiltering>
<verbs allowUnlisted="false">
<add verb="GET" allowed="true" />
<add verb="POST" allowed="true" />
<add verb="DELETE" allowed="true" />
<add verb="PUT" allowed="true" />
</verbs>
</requestFiltering>
</security>
AND
<modules>
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="WebDAV" />
</handlers>