Я только что обновил существующую реализацию Ninject с 1.5 до 2.0. Теперь я вижу прерывистое исключение, возникающее, когда многие запросы происходят за короткий промежуток времени.Ninject Прерывистое исключение, связанное с OnePerRequestModule
Вот исключение, которое бросает.
Тип: 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> б _ _ 6 (параметр ParameterInfo)
на System.Linq.Enumerable.WhereSelectArrayIterator ` 2.MoveNext()
на System.Linq.Buffer ` 1..ctor (IEnumerable ` 1 источник)
в системе .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)
at System.Linq.Enumerable. < > гр _ _ DisplayClass12 ` 3. <CombineSelectors> б _ _ 11 (TSource х)
на System.Linq.Enumerable.WhereSelectEnumerableIterator ` 2.MoveNext()
на System.Linq.Enumerable. <CastIterator> д _ _ аа ` 1.MoveNext()
на System.Linq.Enumerable.Single [TSource] (IEnumerable ` 1 источника)
на Ninject.ResolutionExtensions.Получить [T] (IResolutionRoot корень, IParameter [] параметры)
в NameOfConsumingSite .Application _ BeginRequest (отправитель объекта, EventArgs е) ...
Исключение не вышвырнут, если я удалить OnePerRequestModule
item from httpModules
в web.config, но это добавляет тонна накладных расходов.
Я благодарю всех заблаговременно, если они могут помочь!
Что-нибудь интересное о ваших привязках? Или это стек неявных самообучений класса? В принципе, это, очевидно, должно просто работать. У вас есть версия багажника или у вас есть двоичный файл? –
Ничего особенного, это те же привязки, которые безупречно работали в версии 1.5. Кроме того, я использую текущий двоичный файл. Шон Чамберс из группы Ninject Google Group предполагает, что OnePerRequestModule устарел, поскольку методы InXxxxScope обрабатывают эту ответственность. Остается без ответа, почему OnePerRequestModule все еще включен в решение Ninject. Я также задаюсь вопросом, может ли это быть вызвано гоночным состоянием с GarbageCollectionCachePruner. – reifnir