1

我在我的 Web 项目中使用以下 2 个 Ninject 程序集。

Ninject.dll – Version 2.2.0.0
Ninject.Web.dll – Version 2.2.0.4

我注意到,当我在服务器上执行负载测试时,我收到指向 Ninject 的异常

消息:集合已修改;枚举操作可能无法执行。堆栈跟踪:在 System.Collections.Generic.List 的 System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource 资源) 1.Enumerator.MoveNextRare() at System.Collections.Generic.List1.Enumerator.MoveNext() 在 System.Linq.Enumerable.WhereSelectListIterator2.MoveNext() at Ninject.Infrastructure.Language.ExtensionsForIEnumerableOfT.Map[T](IEnumerable1 系列,Action`1 动作)在 c:\Projects\Ninject\Maintenance2.2\ninject\src\Ninject\Infrastructure\Language\ExtensionsForIEnumerableOfT.cs:line 22 at Ninject.OnePerRequestModule.DeactivateInstancesForCurrentHttpRequest() in c:\Projects\ Ninject\Maintenance2.2\ninject\src\Ninject\OnePerRequestModule.cs:C:\Projects\Ninject\Maintenance2.2\ninject\src\Ninject\OnePerRequestModule 中 Ninject.OnePerRequestModule.b__0(Object o, EventArgs e) 的第 63 行.cs:System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 处的第 36 行(IExecutionStep 步骤,布尔值和同步完成)

我确实从 2011 年 5 月 11 日的 Remo Gloor 找到了这个链接,它说有一个新的 2.4 版本,其中提到该问题将在 2.4 版本中得到修复。我不确定这个版本是否已经发布/可用,因为我找不到它。 Ninject Runtime Exception 频繁发生 - System.InvalidOperationException: Collection was modified; 枚举操作可能无法执行

有谁知道解决此 Ninject 错误的解决方案或知道在哪里可以找到 2.4 版本?


这是我使用 Ninject 2.2.0.0 版完成映射的方式

Bind<IMyEntities>().To<MyEntities>().InRequestScope().WithConstructorArgument("connectionString", ConfigurationManager.ConnectionStrings["MyEntities"].ConnectionString);  

使用 3.0 我将其更改为使用

Bind<IMyEntities>().ToConstructor(x => new MyEntities()); 

或者

Bind<IMyEntities>().ToConstructor(x => new MyEntities(ConfigurationManager.ConnectionStrings["MyEntities"].ConnectionString)); 

或者

Bind<IMyEntities>().ToConstructor(x => new MyEntities(new EntityConnection (ConfigurationManager.ConnectionStrings["MyEntities"].ConnectionString)));  

在尝试了上述所有 3 种不同的方法后,我仍然收到错误消息。每次以某种方式调用第三个构造函数时。
我不确定还能尝试什么。我已经投入了大量时间尝试不同的事情,但仍然没有得出结论/解决方案。如果我无法以某种方式找到/解决此问题,我将不得不一起删除所有 Ninjet 引用并寻找其他一些 DI。

4

1 回答 1

0

由于一些小的接口不兼容,2.4 已变为 3.0。见http://www.nuget.org/packages/Ninject/3.0.0-rc3

于 2012-02-10T19:16:41.710 回答