ASP.NET MVC 3 + Unity-инъекция контроллера
Какое событие лучше всего подходит для регистрации типов в Unity?
Я хочу сделать это
iocContainer.RegisterType<ControllerA>();
iocContainer.RegisterType<ControllerB>();
чтобы они могли быть получены ControllerFactory из контейнера Unity.
Мое мнение состояло в том, чтобы сделать это в событии Application_Start, но меня предупредили, что я могу столкнуться со многими проблемами, вызванными перезапуском пула приложений (без запуска Application_start). Таким образом, альтернативой будет Session_start.
Любой совет?
[ОБНОВИТЬ]
Но если я использую
iocContainer.RegisterInstance<IService>(service)
Что произойдет, если пул приложений перезапустится или IIS будет сброшен? Экземпляр службы был воссоздан?
2 ответа
Нет, Application_start является правильным местом для этого.
Ничего не поможет, если пул приложений или IIS (или сервер перезагружен). Затем контейнер будет переработан сам, но когда пул приложений будет перезапущен, контейнер будет настроен заново.
Я думаю, что PreApplicationStartMethod - лучшее место.
Проверьте эти статьи:
http://haacked.com/archive/2010/05/16/three-hidden-extensibility-gems-in-asp-net-4.aspx
http://ilearnable.net/2010/11/22/webactivator-preapplicationstartmethod/