<p>I'm writing an app where 3rd party vendors can write plugin DLLs and drop them into the web app's bin directory. I want the ability for these plugins to be able to register their own HttpModules if necessary. </p>

<p>Is there anyway that I can add or remove HttpModules from and to the pipeline at runtime without having a corresponding entry in the Web.Config, or do I have to programmatically edit the Web.Config when adding / removing modules? I know that either way is going to cause an AppDomain restart but I'd rather be able to do it in code than having to fudge the web.config to achieve the same effect. </p>

It has to be done at just the right
  time in the HttpApplication life cycle
  which is when the HttpApplication
  object initializes (multiple times,
  once for each instance of
  HttpApplication). The only method
  where this works correct is
  HttpApplication Init().
To hook up a module via code you can
  run code like the following instead of
  the HttpModule definition in
  web.config:
```
```
public class Global : System.Web.HttpApplication
  {
     // some modules use explicit interface implementation
     // by declaring this static member as the IHttpModule interface
     // we work around that
     public static IHttpModule Module = new xrnsToashxMappingModule();
     public override void Init()
     {
         base.Init();
         Module.Init(this);
     }
  }
```
```
All you do is override the HttpApplication's Init() method and
  then access the static instance's Init
  method. Init() of the module hooks up
  the event and off you go.
Via
Rick Strahl's blog