我最近尝试使用StructureMap实现依赖注入。我设法遵循示例一路,但我遇到一个抛出的异常,每次我尝试运行应用程序。这里是我的控制器工厂的一些代码片段。
public class StructureMapControllerFactory : DefaultControllerFactory { protected override IController GetControllerInstance(Type controllerType) { if (controllerType == null) throw new ArgumentNullException("controllerType"); return ObjectFactory.GetInstance(controllerType) as Controller; } }
我的Global.asax调用一个静态的BootStrapper类,注册所有我的依赖,但它看起来像StructureMapControllerFactory的GetControllerInstance被调用两次。第一次调用时,传入一个正确的controllerType,但在第二次调用时它总是为null。
第一次调用GetControllerInstance时,类型设置为HomeController,这是正确的。 HomeController中触发的代码将返回View()。在返回View()时,会在aspx文件上调用Page_Load事件。步进后,它到达一条线:
httpHandler.ProcessRequest(HttpContext.Current);
这就是第二次调用GetControllerInstance的地方。
这里是我的Global.asax位可能相关:
protected void Application_Start() { RegisterRoutes(RouteTable.Routes); Bootstrapper.ConfigureStructureMap(); ControllerBuilder.Current.SetControllerFactory(new StructureMapControllerFactory()); }
我非常渴望获得依赖注入工作,如果任何人可以帮助我,将是最感激。 原文链接:https://www.f2er.com/aspnet/254368.html