在ASP.NET MVC 3中初始化ObjectFactory的位置?

BIL*_*ILL 1 .net c# structuremap dependency-injection inversion-of-control

我需要StructureMap.ObjectFactory在ASP.NET MVC 3应用程序中初始化.

ObjectFactory.Initialize(x => x.For<Db>().HttpContextScoped().Use<Db>());
Run Code Online (Sandbox Code Playgroud)

我必须做的Application_BeginRequest还是Application_Start

Enr*_*lio 5

作为一般规则,您应始终在Application_Start事件处理程序中设置IoC容器,因为它只需要在应用程序的生命周期内发生一次.

对于StructureMap,文档建议在单独的类中分隔容器配置代码Bootstrapper:

public static class Bootstrapper
{
    public static void Bootstrap()
    {
        // ObjectFactory.Initialize(...
    }
}
Run Code Online (Sandbox Code Playgroud)

然后从Application_Start事件处理程序调用:

protected void Application_Start()
{
    Bootstrapper.Bootstrap();
}
Run Code Online (Sandbox Code Playgroud)