Web services 用于存储逗号分隔值的web.config与文本文件

Web services 用于存储逗号分隔值的web.config与文本文件,web-services,iis,configuration-files,Web Services,Iis,Configuration Files,我们在一些服务器上有一组VB.NET/IIS web服务,它们在网站的根目录中有web.config文件,它们已经从中读取了配置。需要添加一个新的配置,它将立即比其他配置长一点,并且只会持续增长。它本质上是一个逗号分隔的值,我想把它专门保存在某种配置文件中 起初我用一个文本文件来做这个,但有一个问题。当web服务线程和进程运行时,文本文件的内容可能会更改,因此每次需要访问其值时,它们都需要重新读取该文件。我考虑过使用某种缓存,但除非每次更新文件时都完全重新启动web服务,否则缓存会阻止立即使用文

我们在一些服务器上有一组VB.NET/IIS web服务,它们在网站的根目录中有web.config文件,它们已经从中读取了配置。需要添加一个新的配置,它将立即比其他配置长一点,并且只会持续增长。它本质上是一个逗号分隔的值,我想把它专门保存在某种配置文件中

起初我用一个文本文件来做这个,但有一个问题。当web服务线程和进程运行时,文本文件的内容可能会更改,因此每次需要访问其值时,它们都需要重新读取该文件。我考虑过使用某种缓存,但除非每次更新文件时都完全重新启动web服务,否则缓存会阻止立即使用文件更新。但是每次读取文本文件都很慢

然后,有了将该值与服务已经使用的其他配置一起放入web.config的想法。当web.config被更改时,这些更改可以被缓存在代码中,并且可以立即生效。然而,web.config是web.config,它不是一个简单的文本文件,只是在代码中读取。IIS以特殊的方式处理web.config

我想,与将逗号分隔的值存储在文本文件(或数据库,可能无论如何都不能用于此)中相比,在web.config中放置逗号分隔的值的任何负面影响都会被抵消,但我想我最好问一下


在web.config中存储一个可能很长的逗号分隔值,而不是在它自己的小文本文件中,这意味着什么?文件是一个特别好的主意还是一个特别坏的主意?在我看来,web.config似乎很容易相处,而不必反复阅读文件,但它肯定有比普通用户所知道的更多的内容。谢谢

我建议为此使用应用程序缓存:


此数据是否经常更改?如果是这样,web.config将是一个坏主意。每次更改web.config时,应用程序池都会被回收。@Namrehs它可能会在更改频率上有一个小尖峰,但大多数情况下,它应该相当稳定。@Namrehs这很有启发性。你想以此作为答案吗?给其他人一点信息:缓存对象中的键值对可以设置为在给定文件更改后立即失效。再加上将逗号分隔的列表放在文本或csv文件中,您将非常接近于最佳状态。这些值会一直缓存,直到文件再次更改,然后可以立即重新应用它们,您不会不断读取文件,应用程序池不会被回收,等等。唯一需要注意的是,您可能需要完全限定对缓存对象的引用的名称……而不只是说
缓存(“myKey”)
,正如他们的文档所建议的,您可能必须说
System.Web.HttpContext.Current.Cache(“myKey”)
。另一个解决方法是存储对
System.Web.HttpContext.Current.Cache
的引用,这样您就不必每次都键入太多内容—可以选择调用引用本身
Cache