C# Spring.NETIOC应用程序上下文

C# Spring.NETIOC应用程序上下文,c#,.net,inversion-of-control,spring.net,C#,.net,Inversion Of Control,Spring.net,我有以下“问题”。 我为spring.net创建了一个应用程序上下文文件。 配置如下所示: 我被告知,如果您对应用程序上下文进行了更改,则不需要重新编译应用程序来查看更改 如果我对配置文件做了一些更改。没有看到任何变化。它仍然是可见的原始数据 我这样称呼应用程序上下文: IApplicationContext ctx = ContextRegistry.GetContext(); ManagementConfigurator configurator = (ManagementCon

我有以下“问题”。 我为spring.net创建了一个应用程序上下文文件。 配置如下所示:


我被告知,如果您对应用程序上下文进行了更改,则不需要重新编译应用程序来查看更改

如果我对配置文件做了一些更改。没有看到任何变化。它仍然是可见的原始数据

我这样称呼应用程序上下文:

IApplicationContext ctx = ContextRegistry.GetContext();
    ManagementConfigurator configurator = (ManagementConfigurator)ctx.GetObject("ManagementConfigurator");
有时需要一段时间才能看到更改(即使在重新编译应用程序之后)

编辑: 我刚刚发现您必须重新启动应用程序池。 然后我将重新表述我的问题:“您能在应用程序中重新加载应用程序上下文吗?”
无需重新启动应用程序池。

应用程序池不必重新启动,与执行代码相关的AppDomain必须回收。我不知道这是否适合您,但如果您将spring对象放在web.config文件中,而不是放在单独的文件中,并且更改web.config文件(例如更改其中的spring配置),关联的AppDomain将被回收,这也意味着您的应用程序将再次重新配置。您也可以更改SpringObjects.config文件,然后“触摸”web.config。(我不确定将SpringObjects.config放在bin目录中是否是一个好主意,但对bin目录的更改也会导致AppDomain回收)

您可以通过编程方式使用ContextRegistry方法(Clear,然后是RegisterContext)来重新加载ApplicationContext,尽管我不建议这样做