从配置文件(*.config)读到内存中,手动修改配置文件后,内存中数据改变问题.

某些情况,我们把数据信息存储在*.xml或*.config文件中,存储在*.config中会比较安全,发布的程序,浏览器不会打开*.config文件,但是*.xml会在浏览器中呈现.

 

使用.config文件做一些配置,是我们的首选.但是也会遇到一些问题.如果.config文件是全局使用的文件,数据不需要经常改动,我们为了性能考虑,会把.config文件加载到缓存中或者其他位置,如Session,而不是每次打开.aspx页面是就从文件中读取数据.

 

我使用的是单态设计模式,一个configBLL类的构造方法中初始化配置文件到XmlDocument中,这个类设计成单态,如代码:

private XmlDocument SearchXml;
        /// <summary>
        /// 加载搜索的xml
        /// </summary>
        public SearchBoxBLL()
        {
            SearchXml = new XmlDocument();
            SearchXml.Load(System.Web.HttpContext.Current.Server.MapPath("/Config/SearchBox.config"));
        }

        private static SearchBoxBLL sbbll = new SearchBoxBLL();

        public static SearchBoxBLL Instance {
            get {
                return sbbll;
            }
        }

这样就不用每次从文件中重新读取数据,但是,这样使用会有一个问题:手动修改配置文件后,不重新启动IIS或者服务器,配置文件虽然修改,内存中的数据并没有跟着改变...

 

导致数据不一致,除非重启IIS.或者写一个类可以检测到配置文件的改动后重新加载配置文件的方法(可能比较难).再或者在页面中设计一个重置按钮,点击后重新构造SearchXML类...不过,还有一个比较偷懒的方法.

这是我的Web.config文件中的配置.

  <configSections>
    <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
    <section name="SearchBoxConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter"/>
  </configSections>

 

 

  <RewriterConfig configSource="Config\UrlRewrite.config"></RewriterConfig>
  <SearchBoxConfig configSource="Config\SearchBox.config"></SearchBoxConfig>

可以看到,我使用了URLRewriter这个dll文件,然后把我自己的配置文件SearchBox.config配置成上方格式.type跟URLRewriter一样.

 

手动再修改SearchBox.config后,发现页面上的数据会重新加载,而不是从内存中读取,如果不修改SearchBox.config文件,则从内从中读取数据.

转载于:https://www.cnblogs.com/lingyuan/archive/2010/11/10/1873263.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值