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

1. 前提准备:

Web.config file:

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

Ps. configSource="Configapp.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后则没有这个要求。

原文地址:https://www.cnblogs.com/sccd/p/5942712.html