前几天写了篇ASP.NET读写Web.Config,之后我确实用了文中的方法,重写了我网站的配置模块。结果上线之后,却发现网站时不时地重启,非常诡异。

研究之后,我发现只要是对Web.Config做修改,就会使IIS重启网站,它不是立即重启的,似乎和GC一样有个阀值。然而我的设置必须保存在Web.Config中,这可肿么办?经过一番Google,终于找到了解决方案,现在似乎已经修复网站重启的问题了。

方法是,把Web.Config的appSettings节点里的配置信息写到另一个文件中,然后设置appSetting节点的configSource属性,指向那个config文件即可。

具体写法如下(摘自原作者博客):

Web.config中appSettings节有个属性:configSource,这个属性可以指定一个存储appSettings的外部文件路径(只支持相对路径),而这个外部文件的修改是不会引起页面的重新编译的,同时它的改动也能立即被ASP.NET运行库检测到。可谓一举两得。

Web.config中的appSettings的配置:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <appSettings configSource="Settings\WebAppSettings.config" />
</configuration>

外部文件Settings\WebAppSettings.config的内容:

<?xml version="1.0" encoding="utf-8"?>
<appSettings>
    <add key="SMTPServerAddress" value="0.0.0.0"/>
</appSettings>