Certainly a module is a lot easier to mange and doesn't create trouble like the one I described. But have you read the official documentation about module? Since they answer to every file request, I think that in a long term scenario it would be absolutely unnecessary implement a module because in a later usage I don't need at all.
Sorry? Let us not go into the fact that you may actually want to use the handler long term, in order to get rid of standard file extensions like every good website should (why TELL The user you use .aspx? Why have a ".html" at the end? The MIME type has all the info for the browser, and if you change technologies, you are more stable with non-suffix-URL's), there is absolutly NOTHING that stops you from removing the handler again.
Apart from monetary focus point, what I want to focus here is that it would be better a new implementation like that one I described rather than finding workaround like using module instead of handler.
Absolutly not a workaround. The handler is supposed to be at the end of the request chain, and not meant to be replaced. In fact, the moment it is created by the HandlerFactory, a lot of things possibly happen, denepding on the interfaces the handler implements (IHttpHandler is not all there is). Replacing the handler at this stage would not allow ASP.NET to "undo" parts of what happened to the request due to the marker interfaces.
Example? Session state support is marked by an interface, and implementing it has grave consequences for performance (all requests with the same session state are serialized, instead of handling them parallael).
A handler deciding at exeution time that it needs to replace it self with another handler would mean ASP.NET would have to implement all features on every request. Now, THIS is pretty stupid - for example, serving static files definitly does not require access to session state. The performance implications are tremendous - not only does it concur processing orverhead, it also means hat image requests are lined up, instead of serving 4 at a time. This really makes a hugh difference.
The MS approach is absolutly logical - do everything in modules, except the actual page processing which is done using the handler.
I am writing a CMS like system too, at the moment - coming from one we have for IIS 6. It looks now that contrary to you I will not fight the system, but use a handler to decide where to handle a request, rewriting the request on the way down. Then handlers can be put into the game as Microsoft wants, without fighting the system.