我在使用 MVC contrib 的可移植区域的外部程序集中有 MVC3 控制器,但我在让 Ninject 注入构造函数依赖项时遇到问题。
找到了控制器,但出现“没有为此对象定义无参数构造函数”的异常。我可以看到 ninject 的控制器工厂正在调用堆栈中被调用,但对于外部程序集,它只是没有通过我的数据库会话。
为什么会这样?
我在使用 MVC contrib 的可移植区域的外部程序集中有 MVC3 控制器,但我在让 Ninject 注入构造函数依赖项时遇到问题。
找到了控制器,但出现“没有为此对象定义无参数构造函数”的异常。我可以看到 ninject 的控制器工厂正在调用堆栈中被调用,但对于外部程序集,它只是没有通过我的数据库会话。
为什么会这样?
可能您应该更新 Ninject。RegisterAllControllersIn
来自一个已经过时的版本。
您需要使用 Ninject 的 RegisterAllControllersIn 方法在其他程序集中注册控制器。
这是我在 global.asax 的 applicationstarted 方法中的实现:
foreach (var ass in BuildManager.GetReferencedAssemblies().Cast<Assembly>())
{
RegisterAllControllersIn(ass);
}