我在我的 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.List
1.Enumerator.MoveNext() 在 System.Linq.Enumerable.WhereSelectListIterator2.MoveNext() at Ninject.Infrastructure.Language.ExtensionsForIEnumerableOfT.Map[T](IEnumerable
1 系列,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。