我有一个Visual Stuido 2010网站项目(不是网络应用程序)。我需要提供进行Web服务调用的能力,可以是从网站按钮或预定的ad-hoc。所以我创建了一个包含对目标Web服务的WCF调用的c#库。然后我从网站上添加对我的库的引用。我现在可以在我的库上调用一个公共方法,然后调用webservice - 很棒!
我的问题是,该网站似乎坚持要求调用Web服务所需的system.servicemodel web.config条目。虽然这有效,但这意味着我有两个地方可以维护它们 - 在客户端网站的web.config和我的c#库的app.config中。我还创建了一个引用库应用程序的c#控制台应用程序(按计划触发Web服务调用),这也需要在其app.config中复制system.servicemodel条目。这同样适用于连接字符串。
有没有人知道是否有一种简单的方法可以避免依赖于在解决方案的各种项目中传播重复的web.config / app.config条目?
谢谢,罗布。
答案 0 :(得分:3)
您可以将相关配置文件“外部化”为单独的文件,并引用app.config
和web.config
中的文件。
任何.NET配置部分都可以存储到外部配置文件中,因此您可以编写:
<system.serviceModel>
<bindings configSource="bindings.config" />
<behaviors configSource="behaviors.config" />
<client configSource="client.config" />
....
</system.serviceModel>
现在,您的外部文件看起来与配置中的相关配置部分完全相同:
bindings.config
:
<?xml version="1.0" encoding="utf-8" />
<bindings>
<basicHttpBinding>
<binding name="......." ...... />
</basicHttpBinding>
</bindings>
注意:Visual Studio的编辑器会抱怨configSource=
属性 - 但Intellisense混淆了 - 每个配置部分都存在configSource
属性 ,并且它确实有用就好了!
注意#2:您无法将整个<system.serviceModel>
外部化,因为这是配置部分组 - 不幸的是,这些都没有任何方法可以放入外部文件。