what is the global.asax Application_Start equivalent when using WAS in IIS7

I believe AppInitialize() is the method you’re looking for. Here’s an article on using it to initialise Castle Windsor in a WAS hosted WCF service:

Castle Windsor and non-HTTP Protocol WCF Services

The essence of the article is, instead of using Application_Start() which won’t get called in WAS:

protected void Application_Start(object sender, EventArgs e)
{
   var container = new WindsorContainer("ioc.config");
   DefaultServiceHostFactory.RegisterContainer(container.Kernel);
}

Use:

public class InitialiseService
{
   /// <summary>
   /// Application initialisation method where we register our IOC container.
   /// </summary>
   public static void AppInitialize()
   {
      var container = new WindsorContainer("ioc.config");
      DefaultServiceHostFactory.RegisterContainer(container.Kernel);
   }
}

To quote Matt:

I confess I spent a while looking at the Host Factory in more detail,
looking to wrap the DefaultServiceHostFactory. However, there appears
to be a far simpler solution and that is to make use of the little
documented AppInitialize method. If you create a class (any class),
put it into the ASP.NET App_Code folder in your project and give it a
method signature as defined below, this little baby will get fired
exactly when you want it to. You can then initialise your IoC
container in there.

Leave a Comment