Исключено прерывистое исключение, связанное с OnePerRequestModule - PullRequest
6 голосов
/ 01 октября 2010

Я только что обновил существующую реализацию 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. 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 (компонент Type, реализация Type)
в Ninject.Components.ComponentContainer.ResolveInstance (компонент Type, тип),
в Ninject.Components.ComponentContainer.Get (компонент Type)
в Ninject.Components.ComponentContainer.GetT
в Ninject.KernelBase.CreateContext (запрос IRequest, привязка IBinding)
в NinjectBase.Ket<> 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, но это добавляет ton накладных расходов.

Заранее благодарю всех, кто может помочь!

1 Ответ

3 голосов
/ 29 ноября 2010

Возникла проблема с многопоточностью.Попробуйте использовать 2.2 RC1, найденный в https://github.com/ninject.Пожалуйста, скажите мне, если эта проблема все еще возникает с этой версией, чтобы убедиться, что у нас больше нет проблем, которые мы должны исправить перед выпуском.

...