抛出与OnePerRequestModule相关的Ninject Intermittent异常

时间:2010-10-01 18:06:06

标签: ninject httpmodule ninject-2 ninject.web

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

这是抛出的异常。

  

类型: System.ArgumentException
  消息:已添加具有相同密钥的项目   来源: Ninject
  System.ThrowHelper.ThrowArgumentException(ExceptionResource资源)中的堆栈跟踪:
  在System.Collections.Generic.Dictionary`2.Insert(TKey键,TValue值,布尔加)
  在System.Collections.Generic.Dictionary`2.Add(TKey键,TValue值)
  在Ninject.Components.ComponentContainer.CreateNewInstance(类型组件,类型实现)
  在Ninject.Components.ComponentContainer.ResolveInstance(类型组件,类型实现)
  在Ninject.Components.ComponentContainer.Get(类型组件)
  在Ninject.Components.ComponentContainer。< CreateNewInstance> b__6(ParameterInfo参数)
  在System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()
  在System.Linq.Buffer`1..ctor(IEnumerable`1 source)
  在System.Linq.Enumerable.ToArray [TSource](IEnumerable`1 source)
  在Ninject.Components.ComponentContainer.CreateNewInstance(类型组件,类型实现)
  在Ninject.Components.ComponentContainer.ResolveInstance(类型组件,类型实现)
  在Ninject.Components.ComponentContainer.Get(类型组件)
  在Ninject.Components.ComponentContainer.GetT
  在Ninject.KernelBase.CreateContext(IRequest请求,IBinding绑定)
  在Ninject.KernelBase。<> c__DisplayClassa。< Resolve> b__6(IBinding binding)
  在System.Linq.Enumerable。<> c__DisplayClass12`3。< CombineSelectors> b__11(TSource x)
  在System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
  在System.Linq.Enumerable。< CastIterator> d__aa`1.MoveNext()
  在System.Linq.Enumerable.Single [TSource](IEnumerable`1 source)
  在Ninject.ResolutionExtensions.Get [T](IResolutionRoot root,IParameter []参数)
  at NameOfConsumingSite .Application_BeginRequest(Object sender,EventArgs e)...

如果我从web.config中的OnePerRequestModule中删除httpModules项,但是添加 ton 的开销,则不会抛出异常。

我提前感谢任何人,如果他们能提供帮助的话!

1 个答案:

答案 0 :(得分:3)

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