Hello,
I have problems getting HTTP requests with verbs other than GET and POST to work in ISAPI handlers. Requests to my application include standard HTTP verbs, such as PUT, DELETE and PATCH as well as custom verbs such as "PUBLISH". For all requests, an error 405 and an HTML error page is returned, which contains the error message:
Path '<METHOD>' is not allowed.
Where <METHOD> is the HTTP method that was used. The URL of the request has neither a file extension nor a final slash.
Requests shall be handled by two separate ISAPI modules, of which one is a DLL and the other one is a WSGI/ISAPI handler (http://code.google.com/p/isapi-wsgi/) for executing Python code. I get the same error for both modules.
Strangely enough, a third handler, which executes an ASP.NET script (Global.asax), which I use for URL-rewriting, handles requests with all sorts of standard and custom verbs fine.
In my web.config file, I set verbs="*" for all handlers. I also tried setting it explicitly to the HTTP verbs I support, but this did not help.
The same application is also hosted on an Apache web server running in parallel to IIS, where it works fine.
Some research about this error message indicated that WebDAV could be causing this problem. However, I am certain that WebDAV is not installed, and the various solutions proposed all around the web for the problem with WebDAV do not work either.
When the error occurs, the stack trace looks as follows:
[HttpException (0x80004005): Path 'PATCH' is forbidden.]
System.Web.HttpMethodNotAllowedHandler.ProcessRequest(HttpContext context) +111
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +181
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75
I am using IIS version 7.5.7600.16385 on Windows Server 2008 R2 (Version 6.1 (Build 7601: Service Pack 1)).
On the HTML error page, there is also some version information: "Microsoft .NET Framework Version:2.0.50727.5466; ASP.NET Version:2.0.50727.5456"
The application pool is running in Classic mode.
Any idea what could be causing this? What other configuration files and options do I need to adjust to make sure that all HTTP verbs can be used in requests to my ISAPI modules?