【发布时间】:2013-11-04 10:12:53
【问题描述】:
在我们的 MVC 项目中,我们广泛使用 Ninject。由于未知原因,StandardKernel 开始抛出 NotSupportedException 并显示消息“不支持具有 null 或空名称的模块”。代码如下:
var _kernel = new StandardKernel(); // <-- this line throws exception
_kernel.Bind<ISessionFactory>().ToMethod(x =>
{
// some code...
}).InSingletonScope();
_kernel.Bind<IAppDomainSetup>().To<AppDomainSetup>();
任何人都知道可能出了什么问题吗?谢谢。
附:这是用于查看程序集版本的 nuget 配置
<package id="Ninject" version="3.0.1.10" targetFramework="net45" />
<package id="Ninject.MVC3" version="3.0.0.6" targetFramework="net45" />
<package id="Ninject.Web.Common" version="3.0.0.7" targetFramework="net45" />
这里是堆栈跟踪
at Ninject.KernelBase.Load(IEnumerable`1 m) in c:\Projects\Ninject\ninject\src\Ninject\KernelBase.cs:line 207
at Ninject.KernelBase.Load(IEnumerable`1 assemblies) in c:\Projects\Ninject\ninject\src\Ninject\KernelBase.cs:line 245
at Ninject.Modules.CompiledModuleLoaderPlugin.LoadModules(IEnumerable`1 filenames) in c:\Projects\Ninject\ninject\src\Ninject\Modules\CompiledModuleLoaderPlugin.cs:line 82
at Ninject.Modules.ModuleLoader.LoadModules(IEnumerable`1 patterns) in c:\Projects\Ninject\ninject\src\Ninject\Modules\ModuleLoader.cs:line 60
at Ninject.KernelBase.Load(IEnumerable`1 filePatterns) in c:\Projects\Ninject\ninject\src\Ninject\KernelBase.cs:line 236
at Ninject.KernelBase..ctor(IComponentContainer components, INinjectSettings settings, INinjectModule[] modules) in c:\Projects\Ninject\ninject\src\Ninject\KernelBase.cs:line 97
at Ninject.KernelBase..ctor(INinjectModule[] modules) in c:\Projects\Ninject\ninject\src\Ninject\KernelBase.cs:line 57
at Ninject.StandardKernel..ctor(INinjectModule[] modules) in c:\Projects\Ninject\ninject\src\Ninject\StandardKernel.cs:line 46
at TradeNet.Web.MvcApplication.CreateKernel() in c:\Users\dpopiashvili.DEA\Documents\Visual Studio 2010\Projects\TradeNet\TradeNet.Web\Global.asax.cs:line 65
at Ninject.Web.Common.Bootstrapper.Initialize(Func`1 createKernelCallback) in c:\Projects\Ninject\Ninject.Web.Common\src\Ninject.Web.Common\Bootstrapper.cs:line 50
at Ninject.Web.Common.NinjectHttpApplication.Application_Start() in c:\Projects\Ninject\Ninject.Web.Common\src\Ninject.Web.Common\NinjectHttpApplication.cs:line 80
【问题讨论】:
-
所以这意味着相同的代码以前工作过?你有什么改变?您是否有一些自定义
NinjectModule覆盖 Name 属性? -
不,我没有,但我在我的项目中使用了 Ninject.Web.Common 库,我想它应该在内部使用一些模块......
-
好的,但是你还没有回答你有什么改变的部分......另外请检查你的
bin文件夹并查找文件:"Ninject.Extensions.*.dll"和"Ninject.Web.*.dll"。您能发布与此方案匹配的文件列表吗? -
感谢 nemesv。我们没有更改内核创建部分。我们也没有将 ninject 或其库升级到更新版本。它开始抛出这个异常的原因对我来说是一个谜。我检查了bin文件夹,里面有Ninject.dll、Ninject.Web.Mvc.dll和Ninject.Web.Common.dll
-
也许.net 版本改变了?你最近安装了VS2013吗?它只发生在一台机器上还是你可以在多台机器上重现?您是否尝试过清理/重建解决方案?重启机器?
标签: .net asp.net-mvc dependency-injection ninject