我在我的ASP.NET MVC 4应用程序中使用Ninject v.3。在我的App_Start文件中,我有以下NinjectControllerFactory,它实现了MVC的DefaultControllerFactory;这很标准。
public class NinjectControllerFactory : System.Web.Mvc.DefaultControllerFactory
{
private IKernel ninjectKernel;
public NinjectControllerFactory(IKernel kernel)
{
ninjectKernel = kernel;
}
protected override System.Web.Mvc.IController GetControllerInstance(System.Web.Routing.RequestContext requestContext, Type controllerType)
{
return (controllerType == null) ? null : (System.Web.Mvc.IController)ninjectKernel.Get(controllerType);
}
}
然后使用以下代码设置控制器工厂:
System.Web.Mvc.ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory(kernel));
现在的问题是,如果我尝试访问不存在的控制器 ,我会收到以下错误:
IControllerFactory' [Name] .Web.App_Start.NinjectControllerFactory'没有为名称[控制器名称]返回控制器。
如果我传入一个不存在的控制器,这个错误很好并且可以预期,但是应该通过404页面更优雅地处理它。我该怎么做? Global.asax文件中有异常捕获吗?
谢谢,
答案 0 :(得分:0)
不幸的是,我找到的最佳解决方案是从Asp.net MVC 4恢复到Asp.net MVC 3,其中Ninject.Web.MVC程序集完全为您处理所有这些。
虽然对某些人来说这可能是一个不可接受的答案,但它有助于解决我的问题。