我们都知道修改.NET Web应用程序的web.config文件会重新启动应用程序并使其读取更新的配置。你是如何使用控制台或WinForms应用程序做到这一点的?谢谢:))
答案 0 :(得分:6)
可能需要FileSystemWatcher来监视文件,并处理相关事件。 System.Configuration.ConfigManager类可能具有重新加载的相关方法(方法调用或类似方法)。我面前没有VS,但我肯定会说肯定会有一些钩子。
答案 1 :(得分:5)
使用FileSystemWatcher在配置文件更改时收到通知。
使用ConfigurationManager.RefreshSection从磁盘刷新它,而无需重新启动应用。
答案 2 :(得分:2)
关于实际进行数据重新加载here有一个很好的部分。根据DarkwingDuck的建议将其与FileSystemWatcher结合使用,你可能会成为胜利者。
答案 3 :(得分:2)
创建FileSystemWatcher并收听配置文件中的更改 触发后,请使用以下代码:
MyGeneratedSettingsFile.Default.Reload();
答案 4 :(得分:1)
log4net可以选择检测* .config文件的外部更改。正如其他人已经说过的,这是通过使用FileSystemWatcher完成的,该文件设置为侦听* .config文件的更改。
底线; FileSystemWatcher是要走的路。
答案 5 :(得分:1)
简单地重新加载配置文件有一个更广泛的含义,这就是应用程序的其余部分应该如何对此作出反应。
例如,您可以在从要与SQL Server通信的配置中读取并为其获取连接字符串后,为SQL Server配置数据库上下文层。
但是,如果用户之后更改了该内容并指定了Oracle数据库,该怎么办?仅仅重新加载配置文件是不够的,您需要能够告诉应用程序的其余部分也发生了一些变化。
我会说你应该在一个新类中抽象出配置部分,这个类有事件。一旦您决定重新加载配置,此类应在内部找出哪些设置已更改并触发相应的事件。
如果您正在使用IoC容器,则可能需要重新连接其某些依赖项,因为新设置。
这样,依赖于配置的应用程序的各个部分可能无论出于何种原因在给定时间间隔内本地缓存配置设置,都需要挂钩相关事件并响应它们。
至于实际检测和重新加载配置文件本身,其他答案似乎已经涵盖了非常好,所以我不打算在此重复。
答案 6 :(得分:0)
如果您使用的是.NET Framework 2并且使用的是用户范围设置,那么它非常透明。更改设置后,只需调用Save()方法,即可立即使用新设置
例如
My.Settings.UpdateInterval = 10
My.Settings.Save()
如果设置是应用程序范围,则可能是FileSystemWatcher