我们都知道,修改 .NET Web 应用程序的 web.config 文件会重新启动应用程序并使其读取更新的配置。如何使用控制台或 WinForms 应用程序来做到这一点?谢谢 :)

有帮助吗?

解决方案

可能需要一个FileSystemWatcher的监视文件,并处理相关事件。 该System.Configuration.ConfigManager类可能有相关的方法来重新加载(方法调用或一些这样的)。我没有VS在我面前,但我会说有一些肯定有钩子肯定。

其他提示

通知使用FileSystemWatcher的,当你的配置文件的更改。

使用 ConfigurationManager.RefreshSection 以刷新它无需重新启动您的应用程序的磁盘。

有一个关于实际执行数据重新加载的很好的部分 这里. 。将其与 DarkwingDuck 建议的 FileSystemWatcher 结合起来,您很可能会成为赢家。

创建 FileSystemWatcher的和收听变化在配置文件中。点击 当被触发时,使用以下代码:

MyGeneratedSettingsFile.Default.Reload();

log4net的具有检测外部变化为* .config文件的选项。和其他人一样已经说这是通过使用被设置为监听更改您的* config文件一个FileSystemWatcher的完成。

底线; FileSystemWatcher的是去的方式。

有单纯虽然重新加载配置文件较宽含义,那就是如何应用程序的其余部分应该反应。

例如,你你从你要谈论到SQL Server的配置读,并得到了连接字符串之后可能配置了用于SQL Server数据库的上下文层。

然而,如果用户以后改变了什么,并指定Oracle数据库呢?这不会是不够的,只是重新加载配置文件,你需要能够告诉的东西也改变了应用程序的其余部分。

我说你应该抽象掉了一个新的类,它有事件的内部结构的一部分。一旦你决定要重新加载配置,这个类应该在内部找出哪些设置更改,并触发相应的事件。

如果您使用的是IoC容器,你可能需要一些其依赖的重新布线,由于新的设置。

这样,位和应用程序的作品,它依赖于配置和可能,不管出于什么原因,在本地缓存配置设置给定的时间间隔将需要钩到相关事件和应对他们射击。

至于实际检测和重新加载配置文件本身,其他的答案似乎已经覆盖了真正好,所以我不打算重复这里。

如果您正在使用的.NET Framework 2和你使用的用户的范围设置这是非常透明的。您更改设置后,只需调用Save()方法和新的设置是立即可用

例如

My.Settings.UpdateInterval = 10
My.Settings.Save()

如果设置是应用范围然后FileSystemWatcher的可能是路要走

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top