文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>从配置文件(*.config)读到内存中,手动修改配置文件后,内存中数据改变问题.

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

时间:2010-11-10  来源:凌鸢

 

使用.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文件,则从内从中读取数据.

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载