我有一个ASP.NET具有自定义StructureMap控制器工厂的MVC 2应用程序,用于处理控制器的依赖项注入:
public class StructureMapControllerFactory : DefaultControllerFactory
{
public override IController CreateController(RequestContext context, string controllerName)
{
Type controllerType = base.GetControllerType(context, controllerName);
return ObjectFactory.GetInstance(controllerType) as IController;
}
}
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
MVC匹配这个路由并将控制器名“doesnotextist”传递到我的控制器工厂。然后GetControllerType返回null并在调用StructureMap时导致null引用异常。我希望能够处理这个异常。
注意,添加一个后续的catch-all路由并不能解决这个问题-MVC匹配默认路由。
我知道我可以通过在控制器的默认路由上设置约束来解决这个问题,但是问题是关于如何使用普通的MVC~/Views/Shared的/错误.aspx在工厂里。