Ошибка при удалении IActivationBlock и импорте IKernel

Проблема началась, когда я пытался использовать приведенное ниже решение для использования Ninject. 3 с проектом MVC 4 RC Web Api:

http://www.peterprovost.org/blog/2012/06/19/adding-ninject-to-web-api/

В этом решении используется IActivationBlock (созданный с методом BeginBlock из IKernel), чтобы реализовать область вызовов. С обычным проектом Ninject, кажется, работает нормально, но когда проект использует расширение Ninject.Extensions.Interception.DynamicProxy, при вызове метода Dispose блока активации возникает следующее исключение:

Ошибка загрузки компонента Ninject IAdviceRegistry

Ни один такой компонент не был зарегистрирован в контейнере компонентов ядра.

И в следующий раз, когда создается новый ActivationBlock и вызывается метод Resolve, возникает следующее исключение:

Ошибка загрузки компонента Ninject ICache

Ни один такой компонент не был зарегистрирован в контейнере компонентов ядра.

Похоже, проблема связана не напрямую с обновлением MVC, а с некоторой несовместимостью между DynamicProxy и IActivationBlock.

Изменить:

Источником проблемы является то, что одному из типов требуется IKernel в конструкторе, и он не имеет прямого отношения к DynamicProxy, но первое исключение возникает только при ссылке на эту сборку.

Итак, вторая ошибка (связанная с ICache) возникает всегда, если ваш тип требует IKernel.

6
задан André Bires 27 June 2012 в 14:20
поделиться