这篇文章是我上一篇文章的一个分支。但是,我还没有尝试实现那里提到的内容。我刚刚学会了使用 ConfigurationManager.OpenExeConfiguration()
加载配置。下一个自然而然的问题是如何管理 WCF 配置?
做了什么:我创建了一个类库项目(称为 A
),并添加了对 wcf 服务的引用。 A
有一个app.config文件作为项目的一部分。因此,VS将在那里自动生成配置。所以当我构建A
时,我会在A
的 bin 文件夹中生成A
的程序集(A.dll
和 A.dll.config
我将另一个项目(B
)添加到解决方案中。添加A
项目作为参考。因此,在构建B
时,A.dll
将被复制到B
的bin文件夹中。我还修改了我的构建属性,以便A.dll.config
在B
的构建后复制到 B 的 bin 目录中。
在类的方法中,在A.dll
内部,我将创建我的 wcf 代理,如下所示:
var wcfProx = new MyWCFSvcClient();
此构造函数的调用实际上从正在执行程序集的配置文件中选取值。如果我希望我的 wcf 代理工作,我知道我必须复制系统。ServiceModel 在 A 的 app.config 到 B 的配置文件中。这就是我以前一直在做的事情。
但是现在,如何处理我通过 ConfigurationManager.OpenExeConfig()
打开的Configuration
对象,以及如何将该对象与我的 wcf 代理实例相关联?这意味着代理实例应从 A.dll.config
派生值。
也许ConfigurationManager.OpenMappedExeConfiguration()就是你要找的。
http://msdn.microsoft.com/en-us/library/ms134269.aspx
在示例代码中,作者将当前配置复制到新文件中,然后以编程方式将新的配置节追加到该文件。
保存更改并重置部分后,他们能够读回设置。
我无法确定这是否会改变当前正在运行的应用程序的配置,但值得一试。