1

我有一个 Visual Stuido 2010 网站项目(不是 Web 应用程序)。我需要提供进行 Web 服务调用的能力,无论是从网站按钮临时调用还是预定调用。因此,我创建了 ac# 库,其中包含对目标 Web 服务的 WCF 调用。然后我从网站上添加对我的图书馆的引用。我现在可以在我的库上调用一个公共方法,然后调用 web 服务 - 太棒了!

我的问题是,该网站似乎坚持要求调用 Web 服务所需的 system.servicemodel web.config 条目。虽然这可行,但这意味着我有两个地方可以维护它们 - 在客户端网站的 web.config 和我的 c# 库的 app.config 中。我还创建了引用库应用程序的 ac# 控制台应用程序(以按计划触发 Web 服务调用),这也需要在其 app.config 中复制 system.servicemodel 条目。这同样适用于连接字符串。

有谁知道是否有一种简单的方法可以避免这种依赖于在解决方案的各个项目中传播重复的 web.config / app.config 条目的情况?

谢谢,罗伯。

4

1 回答 1

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>因为这是一个配置部分组- 不幸的是,这些部分没有任何方法可以放入外部文件中。

于 2012-12-16T09:03:28.657 回答