我有一个XML文件,我将我的一些应用程序设置保存在其中。
我读取这个xml文件并将其缓存到内存中,如果我更改了设置,我想从xml文件中读取最新的更改,但我如何知道xml文件是否已更改?
我正在web上下文中运行此应用程序(asp.net)
发布于 2010-09-21 02:13:14
已经回答了'FileSystemWatcher‘选项,但您也可以使用具有’文件依赖性‘的ASP.NET缓存。
我假设您不希望将实时更新发送到浏览器,您只希望在其他代码运行时在服务器端使用新值。
在应用程序启动时,您的应用程序读取该文件,并将设置对象插入到ASP.NET缓存中,其中包含一个“文件依赖项”。每次检查代码时,都会检查对象是否在缓存中,如果找到,则继续使用相同的对象。当文件发生变化时,你猜到了,缓存将驱逐你的设置的旧副本,这意味着你将从缓存中得到null。此时,您的“启动”代码路径再次运行,重新加载文件,并将新的设置对象重新插入到缓存中(带有依赖项)。
ASP.NET缓存是线程安全的,只要您的反序列化不会导致任何副作用,在没有任何锁定或同步的情况下读取和插入就是安全的。(这意味着两个请求/线程可以同时重新读取更新的设置文件,但只要文件很小,这通常是可以的。)IIRC FileSystemWatcher解决方案更难正确,并且需要同步。
http://www.dotnetfunda.com/articles/article791-data-caching-with-file-dependency-in-aspnet-.aspx
发布于 2010-09-21 01:57:11
您可以使用FileSystemWatcher类来监视该文件。
或者,您可能希望在appSettings或自定义配置节的web.config文件中考虑节约设置。当您的配置更改时,您的web应用程序将自动重新加载。
发布于 2010-09-21 01:57:56
如果您将应用程序设置放在app.config文件中,则可以使用以下命令强制更新缓存的设置:
//update app settings
ConfigurationManager.RefreshSection("appSettings");https://stackoverflow.com/questions/3754038
复制相似问题