6

我刚刚将 Ninject 的现有实现从 1.5 升级到了 2.0。我现在看到在短时间内发生许多请求时会引发间歇性异常。

这是抛出的异常。

类型: System.ArgumentException
消息:已添加具有相同键的项。
来源: Ninject
堆栈跟踪:
在 System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
at System.Collections.Generic.Dictionary`2.Add 的 System.ThrowHelper.ThrowArgumentException(ExceptionResource resource) (TKey key, TValue value)
at Ninject.Components.ComponentContainer.CreateNewInstance(Type component, Type implementation)
at Ninject.Components.ComponentContainer.ResolveInstance(Type component, Type implementation)
at Ninject.Components.ComponentContainer.Get(Type component)

在System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
在 System.Linq.Buffer`1..ctor(IEnumerable`1 源)
在 System.Linq 的 Ninject.Components.ComponentContainer.<CreateNewInstance>b__6(ParameterInfo 参数) .Enumerable.ToArray[TSource](IEnumerable`1 source)
在 Ninject.Components.ComponentContainer.CreateNewInstance(Type component, Type implementation)
在 Ninject.Components.ComponentContainer.ResolveInstance(Type component, Type implementation)
在 Ninject.Components.ComponentContainer。
在 Ninject.KernelBase.CreateContext的 Ninject.Components.ComponentContainer.GetT 处获取(类型组件)
(IRequest 请求,IBinding 绑定)
在 Ninject.KernelBase.<>c__DisplayClassa.<Resolve>b__6(IBinding binding)
at System.Linq.Enumerable.<>c__DisplayClass12`3.<CombineSelectors>b__11(TSource x)
at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext ()
在 System.Linq.Enumerable.<CastIterator>d__aa`1.MoveNext()
在 System.Linq.Enumerable.Single[TSource](IEnumerable`1 源)
在 Ninject.ResolutionExtensions.Get[T](IResolutionRoot root, IParameter [] 参数)
NameOfConsumingSite .Application_BeginRequest(Object sender, EventArgs e) ...

OnePerRequestModule如果我从 web.config 中删除该项目,则不会引发异常httpModules,但这会增加大量开销。

如果他们可以提供帮助,我提前感谢任何人!

4

1 回答 1

3

存在多线程问题。尝试使用https://github.com/ninject上的 2.2 RC1 。请告诉我此版本是否仍然存在此问题,以确保我们在发布之前没有必须修复的其他问题。

于 2010-11-29T00:37:55.260 回答