2012-02-10 105 views
1

我在我的web项目中使用了以下2个Ninject程序集。Ninject投掷“集合被修改;枚举操作可能不会执行”错误

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

我注意到,当我执行我得到在我这都指向Ninject例外服务器上负载测试

消息:集合已修改;枚举操作可能不会执行 。堆栈跟踪:在 System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource 资源)在 System.Collections.Generic.List 1.Enumerator.MoveNextRare() at System.Collections.Generic.List 1.Enumerator.MoveNext()在 System.Linq.Enumerable.WhereSelectListIterator 系列,Action`1行动)在 C:\项目\ Ninject \ Maintenance2.2 \ ninject \ SRC \ Ninject \基础设施\语言\ ExtensionsForIEnumerableOfT.cs:线 Ninject.OnePerRequestModule.DeactivateInstancesForCurrentHttpRequest() 在 C:\项目\ Ninject \ Maintenance2.2 \ ninject \ src \ Ninject \ OnePerRequestModule.cs:行 63 at Ninject.OnePerRequestModule.b__0(Object o,EventArgs e) c:\ Projects \ Ninject \ Maintenance2.2 \ ninject \ src \ Ninject \ OnePerRequestModule.cs:行 36 at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 在System.Web.HttpApplication.ExecuteStep(IExecutionStep一步, 布尔& completedSynchronously)

我没有找到雷莫Gloor日2011年5月11日这个链接,说有已经提到这个问题一个新的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>().ToConstructor(x => new MyEntities()); 

Bind<IMyEntities>().ToConstructor(x => new MyEntities(ConfigurationManager.ConnectionStrings["MyEntities"].ConnectionString)); 
映射
Bind<IMyEntities>().To<MyEntities>().InRequestScope().WithConstructorArgument("connectionString", ConfigurationManager.ConnectionStrings["MyEntities"].ConnectionString); 

用3.0的方式

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

尝试所有上述提到的3种不同的方式后,我仍然收到错误。每次第三个构造函数都会以某种方式被调用。
我不知道还有什么可以尝试的。我花了很多时间尝试不同的事情,仍然没有得出结论/解决方案。 如果我无法找到/解决这个问题,我将不得不一起删除所有Ninjet参考,并去其他一些DI。

回答

0

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

+0

感谢您的信息。 Ninject 3.0.0-rc3是预发布版本Candiate。如果是的话,你会发布什么时候发布? – user1202347 2012-02-10 21:49:47

+0

它是,但现在它将在几天内与上行版本100%二进制兼容。 – 2012-02-11 10:42:12

+0

好的,谢谢。在我更新我的web项目以使用3.0版本后,我收到一个错误“无法找到类型或名称空间名称NinjectHttpApplication”。你能帮我找到版本3.0的文档,以及2.2.0.0和3.0之间的变化。 – user1202347 2012-02-13 16:00:30

相关问题