Контекст приложения Spring.Net IoC - PullRequest
0 голосов
/ 09 января 2009

У меня следующая «проблема». Я создал файл контекста приложения для spring.net. Конфигурация выглядит так:

<spring>
    <context>
        <resource uri="config://spring/objects"/>
    </context>
    <objects configSource="SpringObjects.config" />
</spring>

Мне сказали, что если вы что-то измените в контексте приложения, вам не нужно перекомпилировать приложение, чтобы увидеть изменения.

Как бы то ни было, если я что-то изменю в файле конфигурации. Никаких изменений не видно. Это все еще оригинальные данные, которые видны.

Я называю контекст приложения следующим образом:

IApplicationContext ctx = ContextRegistry.GetContext();
    ManagementConfigurator configurator = (ManagementConfigurator)ctx.GetObject("ManagementConfigurator");

Иногда изменения становятся заметны (даже после перекомпиляции приложения).

EDIT: Я только что узнал, что вам нужно перезапустить пул приложений. Тогда я просто перефразирую свой вопрос: «Можете ли вы перезагрузить контекст приложения в вашем приложении?» Без перезапуска пула приложений.

1 Ответ

2 голосов
/ 09 января 2009

Пул приложений не нужно перезапускать, домен приложения, связанный с вашим исполняемым кодом, должен быть переработан. Я не знаю, подходит ли вам этот вариант, но если вы поместите объекты Spring в файл web.config вместо отдельного файла, и вы измените файл web.config (например, изменив конфигурацию пружины внутри ит), связанный с ним домен приложения будет переработан, что также должно означать, что ваше приложение снова будет перенастроено. Вы также можете просто изменить свой файл SpringObjects.config и после этого «коснуться» файла web.config. (Я не уверен, что размещение SpringObjects.config в каталоге bin - хорошая идея, но изменение в каталоге bin также вызывает перезапуск AppDomain)

Вы можете использовать методы ContextRegistry (Clear, а затем RegisterContext) программно для перезагрузки ApplicationContext, хотя я бы не рекомендовал его.

...