【发布时间】:2013-09-20 09:54:41
【问题描述】:
我有一个简单的 MVC 4 应用程序:
我从 nuget 安装了 Ninject MVC 3,并将服务从 App_Start folder 注册到 NinjectWebCommon.cs:
/// <summary>
/// Load your modules or register your services here!
/// </summary>
/// <param name="kernel">The kernel.</param>
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<IAppFormAppUnitOfWork>()
.To<AppFormAppUnitOfWork>()
.InRequestScope();
}
我有一个HomeController
public class HomeController : Controller
{
private readonly IAppFormAppUnitOfWork _unitOfWork;
public HomeController(
IAppFormAppUnitOfWork unitOfWork)
{
_unitOfWork = unitOfWork;
}
}
我得到了错误
没有为此对象定义无参数构造函数。
我还在RegisterServices(IKernel kernel) 方法中设置了一个断点,它被命中了。
我错过了什么,做错了什么?
【问题讨论】:
-
这是一个令人讨厌的错误。基本上,这意味着 Ninject 没有正确注册,也没有将自己注册为 MVC 的控制器工厂。
-
您是用
ControllerBuilder.Current.SetControllerFactory注册您的NinjectControllerFactory还是用DependencyResolver.SetResolver注册您的NinjectRependencyResolver? -
@Steven:不,这就是问题所在。之前,在 MVC3 上,默认情况下一切正常。不需要手动注册控制器工厂
标签: c# asp.net-mvc asp.net-mvc-4 ninject