ASP.Net Web.config 中引用外部config文件

1. 前提准备:

Web.config file:

<?xml version="1.0" encoding="utf-8"?>

<configuration>

<appSettings configSource="Config\app.config"></appSettings>

</configuration>

Ps.configSource="Config\app.config",此处一定要使用反斜杠“\”;

app.config file:

<?xml version="1.0"?>

<appSettings>

<add key="webpages:Version" value="3.0.0.0" />

<add key="webpages:Enabled" value="false" />

<add key="ClientValidationEnabled" value="true" />

<add key="UnobtrusiveJavaScriptEnabled" value="true" />

<add key="CHINA" value="Asia"/>

</appSettings>

调用方法并输出结果:

public string GetAppSettingValue()

{

  string value = ConfigurationManager.AppSettings["CHINA"].ToString();

  return value;

}

2. 测试configSource:

由于以上代码用的测试例子为configSource,所以在补充相应的代码后可以直接运行;

结论:可以正确的输出结果:"Asia".在不重新启动IIS的情况下修改app.config中key="CHINA"的value为“BEIJING”,然后刷新页面,更新后的值"BEIJING"被正确输出。

3. 测试file:

将Web.config中的configSource修改为file,同时修改app.config中key="CHINA"的value为“Asia”, 在补充相应的代码后运行;

结论:可以正确的输出结果:"Asia". 在不重新启动IIS的情况下重新修改app.config中key="CHINA"的value为“BEIJING”,然后刷新页面,更新后的值"BEIJING"没有被输出,输出依然是"Asia"。

4. 总结:Web.config中引用app.config有两种方式:file或者ConfigSource,区别是file只能用于<appSettings>节点。通过测试还发现,file属性中指定文件名称时正斜杠"/"和反斜杠“\”都可以被正确解析,而configSource只能解析反斜杠“\”。修改Web.config内容后需要重启IIS,而修改app.config后则没有这个要求。