将Dictionary对象存储在ApplicationState中,而不是放在Web.config中

本文关键字:Web config 存储 Dictionary ApplicationState 对象 | 更新日期: 2023-09-27 18:05:32

我需要在我的asp .net应用程序中存储字典。这个字典基本上是键(字符串)到值(字符串)的直接映射。在应用程序的生命周期中,字典不会改变,并且将包含大约10个元素。

我将迭代从存储过程返回的可能数千行,并从这个字典中获得相应的值。

解决这个问题的最佳方法是什么?以下是我对实现它的两个想法:

  1. 在Application_Start期间实例化和初始化字典,并将其存储在ApplicationState对象中。

还是……

做他们在这里提出的:我如何在我的web中存储一个字典对象。配置文件?

我喜欢选项2,因为将来添加一个新值只是在Web中添加一个条目的问题。配置没有任何代码更改,但我担心性能,因为我将不得不获得从存储过程返回的每一行的值。

我想知道如果这些查找在网络。配置以某种方式优化/缓存?

将Dictionary对象存储在ApplicationState中,而不是放在Web.config中

如果使用ConfigurationManager访问AppSettings值,则在第一次访问后缓存这些值。所以当你第一次访问ConfigurationManager.AppSettings["MyValue"]时,它从磁盘读取,然后从缓存读取。

为什么不混合一下呢?在Application_Start上加载您的web。将值配置到字典中。然后,您仍然可以配置列表而无需更改代码,并且您的代码可以轻松引用字典

编辑:当然,这里的缺点是,列表只会刷新当你重新启动你的网站(即导致Application_Start再次启动),而作为一个直接的配置文件,将允许更多的即时结果,当你修改网页。配置文件。也许这就是选择网络的一个原因。配置选择