在我的组织中,我们有多个环境(Dev、QA、Stage、Prod、灾难恢复),我希望我的 app/web.config 文件在 URI、连接字符串等中不包含特定于环境的详细信息。我首选的方法是执行运行时替换,例如:
<endpoint address="http://MyDevWebServer/SomeService" binding="basicHttpBinding"...
我更喜欢这样的东西:
<endpoint address="http://{Env:WebServerName}/SomeService" binding="basicHttpBinding"...
这对于从我可以控制的类中读取的配置设置很简单(只需提供一个包装器,用该环境的实际服务器名称执行替换 {Env:WebServerName}),但我也希望在从中读取设置时进行这种替换我无法控制的类(例如 WCF、NHibernate 等)。有谁知道注入这种替换逻辑的方法。我假设 AOP 方法可能是可能的,但个人对 AOP 框架没有太多经验。