Я прочитал много информации по этому поводу, но я не могу найти ничего текущего (по состоянию на 1/2011) о том, как именно это должно быть сделано в настоящее время.Я прочитал пару хороших постов, на которых, кажется, есть ответ, без подробностей.Более старые подходы pre-unity-2 в основном создавали нестандартные пожизненные менеджеры.Похоже, что лучший способ сделать это сейчас - это использовать дочерний контейнер, который создается в начале запроса и удаляется в конце запроса, используя управляемое контейнером время жизни .Другой человек сказал, что они достигли этого, используя иерархическое время жизни с createchildcontainer .
Большая часть найденного материала говорит о создании дочернего контейнера во время Application_BeginRequest, который я пробовал.Это не работает, потому что моя фабрика контроллеров (IoCControllerFactory из MvcContrib) использует контейнер, зарегистрированный во время Application_Start (реализация IDependencyResolver в MvcContrib), который является контейнером по умолчанию / root.
У меня есть настройка единства в сети.config, и я могу создавать дочерние контейнеры, но я не могу заставить контроллеры использовать их для DI для создания синглетонов по запросу.Нужно ли создавать специальный контейнер для использования на фабрике контроллеров вместо рута?Должно ли оно быть управляемым контейнером или иерархическим?Мне не следует переустанавливать DependencyResolver при каждом запросе, не так ли?