If you've been developing Asp.net web applications you've probably come across the
IHttpModule interface, that makes it possible to write reusable request-level event handlers. The same thing can of course be done by writing event handlers inside the
Global.asax codebehind, but then you wouldn't be able to reuse the same code unless you do a copy/paste.
Global.asax codebehind has one particular advantage over your custom modules: it can also attach to application-level events like application start event for instance. As per documentation, this is not possible with a custom module. Or so I thought...