修改依赖缓存配置 web.config ,不重启应用程序域!

题目又为:自定义配置文件的处理方式 :configSource 、 file

在web项目中用到了依赖缓存功能 。

为了便于管理配置文件,我使用了<appSettings file="Web.Settings.config"> 的属性,以分开管理。

同时希望在网站BETA阶段,可以手动更改配置文件的属性值,并且不会重启应用程序域

Web.Settings.config

Code

 

比如我们可以将 <add key="HealthManageTitleEnableCaching" value="true"/> value 属性设为 false 。即可关闭健康管理栏目的缓存。

这时问题就出来:修改配置文件后(false),网站应用程序域将重新启动,这回引起什么样的灾难了?

 

我们用如下简单的代码做个测试:

1、default.aspx ,包含一个textbox 、一个button、两个label 

Code

 

2、default.aspx.cs

Code

 

3、初始运行界面,可以看到缓存开关为 true ,而session值为null 。

 

4、显示我们输入“有了”当文本框,并按下按钮,显示结果为什么了?如下图,我们的Session["temp"]已经有值了 Session["temp"]= "有了" ;

 

5、好。这个时候,我们将配置文件中的 HealthManageTitleEnableCaching 的value 设为  false 。然后我们刷新页面。

刷新后,缓存确实已经被关闭了(为false) 。可是不幸的是:Session["temp"] 值丢失了。天啊,如果我用session保存登陆信息,保存购物车信息,...... ,那不全没了?后果不堪设想!

 

这如何是好。

查MSDN,原来appSettings 还有一个属性 configSource 。http://msdn.microsoft.com/zh-cn/library/ms228154(VS.80).aspx 

Code

 

configSource 、 file 两者区别:

1、configSource 可以保证,在修改了配置后,不会引起应用程序域的重启。

2、configSource 被指定后,整个字节都必须移植到新的config文件中。而file 属性却没有这个要求。

 

 

 

posted @ 2009-01-01 01:39  lyamlf123  阅读(1260)  评论(0编辑  收藏  举报