Я только что обновил существующую реализацию Ninject с 1.5 до 2.0. Теперь я вижу прерывистое исключение, которое возникает, когда за короткий период времени выполняется много запросов.
Вот возникшее исключение.
Тип: System.ArgumentException
Сообщение: Элемент с таким же ключом уже был добавлен.
Источник: в 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.b__6 (параметр ParameterInfo)
в System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext ()
в System.Linq.Buffer`1..ctor (исходный код IEnumerable`1)
в System.Linq.Enumerable.ToArray [TSource] (исходный код IEnumerable`1)
в 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.b__6 (привязка IBinding)
в System.Linq.Enumerable. <> c__DisplayClass12`3.b__11 (TSource x)
в System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext ()
в System.Linq.Enumerable.d__aa`1.MoveNext ()
в System.Linq.Enumerable.Single [TSource] (исходный код IEnumerable`1)
в Ninject.ResolutionExtensions.Get [T] (корень IResolutionRoot, параметры IParameter [])
at NameOfConsumingSite .Application_BeginRequest (Отправитель объекта, EventArgs e) ...
Исключение не создается, если я удалю элемент OnePerRequestModule
из httpModules
в web.config, но это добавляет тонну накладных расходов.
Я заранее благодарю всех, если они могут помочь!