我相信AppInitialize()
这是您正在寻找的方法。这是一篇关于使用它在 WAS 托管的 WCF 服务中初始化 Castle Windsor 的文章:
Castle Windsor 和非 HTTP 协议 WCF 服务
这篇文章的本质是,在 WAS 中不会使用Application_Start()
which 不会被调用:
protected void Application_Start(object sender, EventArgs e)
{
var container = new WindsorContainer("ioc.config");
DefaultServiceHostFactory.RegisterContainer(container.Kernel);
}
利用:
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);
}
}
引用马特的话:
我承认我花了一段时间更详细地查看主机工厂,希望将DefaultServiceHostFactory
. 但是,似乎有一个更简单的解决方案,那就是利用很少记录的 AppInitialize 方法。如果您创建一个类(任何类),将其放入App_Code
项目中的 ASP.NET 文件夹并为它提供如下定义的方法签名,这个小宝贝将在您想要的时候被解雇。然后你可以在那里初始化你的 IoC 容器。