我在IIS7中托管了一系列ASP.NET网站。我使用Castle Windsor进行依赖注入,配置数据保存在XML文件中。
我觉得嘿,这很酷,我可以编辑文件切换到我的界面的不同实现。我意识到,因为Castle Windsor在实例化容器时解析XML配置,我需要以某种方式重新启动网站以“重置”Castle Windsor。
这并不像我想象的那么简单。我试过在IIS中右键单击该站点并选择“重新启动”,但这不会切换实现。奇怪的是,如果我“停止”该网站,它将不再有效,但会重新开始,并且它会像以前一样继续。
我猜重启应用程序池会起作用,但由于这会影响其他网站,我也不想这样做。
有人可以提出一种方法来完全重启应用而不影响其他网站吗?
答案 0 :(得分:3)
您可以在城堡配置文件上设置FileSystemWatcher,在更新事件上,您可以调用
HttpRuntime.UnloadAppDomain();
这将导致Application_end on on next be request您的webapplication / AppDomain将重启
答案 1 :(得分:2)
答案 2 :(得分:2)
答案 3 :(得分:0)
如果这些设置与web.config
位于不同的文件中,则更改其设置不会触发应用程序重启。
除非可以通过某种方式通知Castle Windsor在运行时刷新其设置,否则重新加载配置的唯一方法就是“触摸”web.config
文件。