Ninject抛出“集合被修改;枚举操作可能无法执行”错误

时间:2012-02-10 15:49:28

标签: collections ninject enumeration was

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

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

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

  

消息:收集已修改;枚举操作可能不会   执行。堆栈跟踪:at   System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource   资源)   System.Collections.Generic.List 1.Enumerator.MoveNextRare() at System.Collections.Generic.List 1.Enumerator.MoveNext()at   System.Linq.Enumerable.WhereSelectListIterator 2.MoveNext() at Ninject.Infrastructure.Language.ExtensionsForIEnumerableOfT.Map[T](IEnumerable 1   系列,Action`1动作)in   C:\项目\ Ninject \ Maintenance2.2 \ ninject的\ src \ Ninject \基础设施\语言\ ExtensionsForIEnumerableOfT.cs:行   22点   Ninject.OnePerRequestModule.DeactivateInstancesForCurrentHttpRequest()   在   C:\项目\ Ninject \ Maintenance2.2 \ ninject \ SRC \ Ninject \ OnePerRequestModule.cs:线   63在Ninject.OnePerRequestModule.b__0(对象o,EventArgs   e)in   C:\项目\ Ninject \ Maintenance2.2 \ ninject \ SRC \ Ninject \ OnePerRequestModule.cs:线   36点   System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()   在System.Web.HttpApplication.ExecuteStep(IExecutionStep步骤,   布尔和放大器; completedSynchronously)

我确实从2011年5月11日的Remo Gloor找到了这个链接,该链接说有一个新的2.4版本已经提到问题将被修复2.4版本。我不确定这个版本是否已发布/可用,因为我无法找到它。 Ninject Runtime Exception occuring frequently - System.InvalidOperationException: Collection was modified; enumeration operation may not execute

有没有人知道解决这个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。

1 个答案:

答案 0 :(得分:0)

2.4因为一些次要的界面不兼容而变成了3.0。见http://www.nuget.org/packages/Ninject/3.0.0-rc3