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:
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 theDefaultServiceHostFactory
. 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.NETApp_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.