根据机器名称选择设置
问题描述:
当我们部署应用程序时,通常会有一台用于生产和开发的独立机器。大多数应用程序在常规.NET App.config
或Web.config
文件中都有设置。例如:根据机器名称选择设置
<add key="Dev_Setting1" value="val1"/>
<add key="Prod_Setting1" value="val2"/>
<add key="Prod_Setting1" value="val3"/>
<add key="Prod_Setting2" value="val4"/>
我们希望应用程序根据机器自动选择两组设置。有没有这样做的标准方式?欢迎其他建议。
答
以下方法如何?
将机器名称设置为其中一个设置将允许您确定需要使用哪个前缀来加载应用程序设置 - 只要您避免通过标准API加载,而是实现您自己的“让我一个设置值',您可以从机器名称中查找设置前缀,然后查找相关设置。
<add key="MachineConfigPrefix_MyMachine1" value="Prod"/>
<add key="MachineConfigPrefix_MyMachine2" value="Dev"/>
<add key="Prod_Setting1" value="val3"/>
<add key="Prod_Setting2" value="val4"/>
<add key="Dev_Setting1" value="val5"/>
<add key="Dev_Setting2" value="val6"/>
答
我通常使用首先查找与机器名作为前缀的设置方法:
public static string GetConfiguration(string key) {
return ConfigurationManager.AppSettings[Environment.MachineName + "." + key] ?? ConfigurationManager.AppSettings[key];
}
这样,你可以有一个默认设置,任何机器的本地设置:
<add key="Setting1" value="val1"/>
<add key="Developer1.Setting1" value="val2"/>
<add key="Developer2.Setting1" value="val3"/>
<add key="TestServer.Setting1" value="val4"/>