Asp.Net MVC4 + Web API Controller Delete request >> 404 error Asp.Net MVC4 + Web API Controller Delete request >> 404 error asp.net asp.net

Asp.Net MVC4 + Web API Controller Delete request >> 404 error


If the error you are receiving is an html content type from IIS, error 404.0

Make sure you have the section in your web.config that is added by the Web Api template.By default IIS will not serve the DELETE verb, and this config overrides the behavior.

  <system.webServer>    <handlers>      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />      <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />      <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />    </handlers>  </system.webServer>


HTTP DELETE does not have a body. You need to pass the id as a query string parameter.


Ran across the 404 running on Mac using Dotnet Core.

In my case I changed the attribute annotation from HttpDelete to HttpDelete("{id}")