I was developing some services using Asp.net Web API and it was working fine on the visual studio development server, but as soon as I hosted it on IIS (7.5) I was getting this error. The HTTP verb for the service was PUT. GET and POST requests were working fine. The error was occurring due to WebDAV which does not allow the PUT verb. So a simple solution is to remove the WebDAV module from your web project.
1. Go to your web.config and add the following under modules in system.webserver,
<remove name="WebDAVModule"/>
2. After adding this my web.config looked like this (This is only a part of it),
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule"/>
</modules>
1. Go to your web.config and add the following under modules in system.webserver,
<remove name="WebDAVModule"/>
2. After adding this my web.config looked like this (This is only a part of it),
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule"/>
</modules>