从类库调用 WCF 服务:App.Config 与 Web.Config?

Posted

技术标签:

【中文标题】从类库调用 WCF 服务:App.Config 与 Web.Config?【英文标题】:Calling WCF service from class library: App.Config vs Web.Config? 【发布时间】:2013-03-02 19:57:30 【问题描述】:

从现有的WebApplication 我用来调用 WCF 服务。这些服务的代理是使用添加服务参考菜单创建的。从而在本项目中生成>> Web.config。

我在解决方案中添加了另一个class library project。该项目还添加了对服务的引用。从而在本项目中生成>> App.Config文件。

我了解,在 N 层应用程序中,我们应该有到服务的公共网关。只是出于好奇,我想知道-

对于源自 WebApp 的 WCF 调用,传播到将引用哪个配置文件 (App/Web) 的类库 用于定位客户端端点配置?

【问题讨论】:

如果是使用类库的 Web 应用程序,则 Web 代码和库代码都将使用 web.config 文件。但是,您可以引用要包含在 web.config 中的其他配置文件。我确实知道我的头顶是怎么回事 【参考方案1】:

web.config 文件将用于定位服务。

原因是因为在这种情况下,app域属于web应用,而不是类库,并且这个app域的默认配置文件是web.config

【讨论】:

我要补充一点,这适用于任何可执行文件(Web 应用程序、Windows 应用程序、控制台应用程序等)。默认的 .config 是可执行应用程序的本地文件。所有引用的库都将使用父应用程序 .config。需要添加本地 .config。以下是关于继承的一些重要考虑的参考:weblogs.asp.net/jgalloway/archive/2012/01/17/…【参考方案2】:

@musefan 是正确的。使用的是 web.config。

如果您愿意,您可以将一些配置部分拆分为单独的文件,并从主 web.config 中引用它们。您可能希望这样做,以便可以在一个地方维护 WCF 客户端和服务器配置,以确保它们保持一致。

例如,如果你想分离出<client> 部分,你可以这样做:

<client configSource="client.xml" />

其中 client.xml 是一个包含相关客户端配置信息的文件。

这篇博文更详细地告诉您如何操作。

http://blog.andreloker.de/post/2008/06/keep-your-config-clean-with-external-config-files.aspx

【讨论】:

以上是关于从类库调用 WCF 服务:App.Config 与 Web.Config?的主要内容,如果未能解决你的问题,请参考以下文章

增加C#类库(DLL)调用wcf服务超时

从类库项目中的 App.config 中读取

WCF 服务:app.config 与属性或两者的混合

7.凤凰架构:构建可靠的大型分布式系统 --- 从类库到服务

C#调用WCF问题汇总

Wcf:可配置的服务调用方式