Как внедрить зависимости для http-запроса (или для http-контекста) с помощью unity 2.0 и asp.net mvc - PullRequest
1 голос
/ 18 января 2011

Я прочитал много информации по этому поводу, но я не могу найти ничего текущего (по состоянию на 1/2011) о том, как именно это должно быть сделано в настоящее время.Я прочитал пару хороших постов, на которых, кажется, есть ответ, без подробностей.Более старые подходы pre-unity-2 в основном создавали нестандартные пожизненные менеджеры.Похоже, что лучший способ сделать это сейчас - это использовать дочерний контейнер, который создается в начале запроса и удаляется в конце запроса, используя управляемое контейнером время жизни .Другой человек сказал, что они достигли этого, используя иерархическое время жизни с createchildcontainer .

Большая часть найденного материала говорит о создании дочернего контейнера во время Application_BeginRequest, который я пробовал.Это не работает, потому что моя фабрика контроллеров (IoCControllerFactory из MvcContrib) использует контейнер, зарегистрированный во время Application_Start (реализация IDependencyResolver в MvcContrib), который является контейнером по умолчанию / root.

У меня есть настройка единства в сети.config, и я могу создавать дочерние контейнеры, но я не могу заставить контроллеры использовать их для DI для создания синглетонов по запросу.Нужно ли создавать специальный контейнер для использования на фабрике контроллеров вместо рута?Должно ли оно быть управляемым контейнером или иерархическим?Мне не следует переустанавливать DependencyResolver при каждом запросе, не так ли?

1 Ответ

1 голос
/ 18 января 2011

Попробуйте http://mvcunity.codeplex.com/ или загрузите исходный код, чтобы увидеть, как это делается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...