2011-03-14 152 views
2

我们有一个app.config文件,其中列出了特定的端点地址以及一些其他服务设置。我们希望使用外部配置文件来更改这些设置,这些配置文件是由它所在的环境设置的。我们希望它做的是动态读取该环境的外部配置文件,而无需硬编码值。覆盖App.Config设置

我知道有一种方法可以在该部分特定的部分中指定外部文件。有没有办法动态设置这个位置?

回答

3

你的第一个问题 - 是的,你可以“覆盖”的任何配置部分(如<client><bindings>等不得部分基团如<system.serviceModel>)与外部文件:

<client configSource="yourCustomClient.config" /> 

Visual Studio将突出这有错误 - 但是它的工作原理! - 这只是Visual Studio编辑器的一个缺陷。

你的第二个问题:不,我不相信有什么办法可以使这个真正动态 - 我能想到的最好的方式是在构建和/或安装时对你的配置文件进行一些XML转换。

+0

我结束了基本上通过代码动态地设置它...这很容易。 – Woundedbear 2011-03-17 20:31:08

1

我认为this link将帮助您动态加载任何App.Config文件并使用WCF服务。

你的, 阿洛伊斯·克劳斯

0

我的建议是做XAP内并通过环境信息作为参数的WCF配置。所有WCF配置调用可以通过代码来完成,而不在web.config

4

我结束了与修改设定只将其设置到一个外部配置文件使用的设置:

System.Configuration.AppSettingsSection appsettings = config.AppSettings; 
    appsettings.File = Environment.CurrentDirectory + "\\configs\\" + configFile; 
    config.Save(ConfigurationSaveMode.Modified); 
    ConfigurationManager.RefreshSection("appsettings"); 

这会允许你动态地将它设置为你想要的任何配置文件。