Search code examples
iis-7httphandlerhttphandlerfactory

How can I stop IIS7 from using HttpHandlers?


I'm having a bit of a play around with IIS7, just trying to catch events manually in global.asax and skip the ASP httphandler pipeline entirely. To this end, I've set

<httpHandlers>
    <clear/>
</httpHandlers>
<httpModules>
    <clear/>
</httpModules>   

but when I call the server I get a YSOD

[HttpException]: No http handler was found for request type 'GET'
   at System.Web.HttpApplication.MapHttpHandler(HttpContext context, String requestType, VirtualPath path, String pathTranslated, Boolean useAppConfig)
   at System.Web.HttpApplication.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

What do I need to do to completely prevent IIS from handling things using the conventional pipeline? What I want is just to do Response.Writes in event handlers and async methods set up in HttpApplication.Init

edit: My question was obv. a bit unclear (sorry to anyone whose time was wasted) - I should have explained better as what I'm trying to do is pretty unconventional. I'm trying to see if I can use IIS to handle web requests in a manner similar to node.js - by wiring handlers up to the async methods in HttpApplication. To this end I need ASP to stop throwing a wobbly because I don't want to use HttpHandlers. Currently my best bet is to use a NullHttpHandler for all requests, but I'm wondering if I can disable the HttpHandler system completely. Your ideas!


Solution

  • You need IIS. The request starts in the IIS pipeline, and for ASP .NET to handle it, IIS needs to be able to find a http handler, it can pass the request to. It passes the request to ASP .NET only once it has found an appropiate handler.