0

我有一个简单的 MVC 4 应用程序:

我从 nuget 安装了 Ninject MVC 3,并将服务注册到NinjectWebCommon.csfrom App_Start folder

/// <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),它被击中了。

我错过了什么,做错了什么?

4

1 回答 1

0

如果你已经用 Ninject 注册了你的 DependencyResolver.Current,那么,就只剩下一个问题了。

Ninject 在构造 AppFormAppUnitOfWork 以传递给控制器​​的构造函数时遇到异常。

要找出异常是什么,您可以在某些地方(例如开始请求)编写几行代码,并尝试从 DependencyResolver.Current 解析您的对象。

将该代码放入try catch,然后您将找到问题的主要根源。

祝你好运

于 2013-09-20T11:53:36.243 回答