配置更改时.Net应用程序自动重启

And*_*rko 6 .net configuration

当它的任何部分配置发生变化时,我必须完全重启应用程序.IIS最好在asp.net应用程序中查看配置,但如何重新启动控制台或服务等应用程序?

是否可以使用FileSystemWatcher监视配置文件更改并启动新的应用程序实例,关闭当前应用程序?

就像是:

    var file = new FileInfo(AppDomain.CurrentDomain.
SetupInformation.ConfigurationFile);

    var watcher = new FileSystemWatch(file.Directory.FullName)
                      { 
                          Filter = "...", 
                          NotifyFilter = NotifyFilter.LastWrite }
                      );

    watcher.Changed += .. // Process.Start(..), current process shutdown 
    watcher.EnableRaisingEvents = true;
Run Code Online (Sandbox Code Playgroud)

Chr*_*n.K 2

您可以在单独的 AppDomain 中运行实际的应用程序逻辑。初始(或默认)AppDomain 仅用于(a)启动带有文件系统观察程序的线程,以及(b)在单独的AppDomain 中启动应用程序逻辑。关键是,您可以在创建 AppDomain 时传递配置文件的路径。

当您发现配置文件中发生更改时,您将停止应用程序逻辑(无论这在您的情况下意味着什么 - 这是真正棘手的部分!)并卸载 AppDomain,然后重新启动它,这将使用更新的配置文件。