在Host应用程序中使用app.config和在WCF库中使用app.config?

时间:2015-11-17 02:32:39

标签: .net web-services wcf

首先,我对WCF很新。我已经完成了一些项目,但它们要么托管在IIS中(所以只涉及WCF库而没有任何主机应用程序),或者WCF类在主机应用程序项目中被声明(因此只有1 app.config

现在我需要理解一个项目(不是我的)中的代码,其中WCF库项目是独立的,并且它有自己的app.config文件,主机应用程序项目引用了WCF库项目,并且还有它自己的app.config

我可以看到app.config的{​​{1}}至少在system.serviceModel的部分中有所不同。最大的区别在于一个app.config(主机应用程序)使用netTcpBinding定义服务的端点,而在另一个app.config(WCF lib)中,使用basicHttpBinding。这让我很困惑。所以我的问题是在运行使用app.config的主机应用程序时,它如何确定解析自己的app.config和引用的WCF库?我怀疑WCF库项目的app.config将被忽略但不太确定。请给我一些有用的信息。谢谢!

1 个答案:

答案 0 :(得分:2)

在配置文件方面,WCF库与.NET中的任何其他类库没有什么不同。类库将使用引用它的应用程序的配置文件 - 库项目模板中的app.config文件未被使用(我不确定为什么它甚至包含在内,说实话)。

通常,在开发WCF类库时,您会将app.config的相关<system.serviceModel>部分复制到将托管服务的应用程序的配置文件(应用程序或Web)中

因此,要回答您的问题,服务库的app.config文件将被忽略,就像任何库的配置文件一样。托管服务的应用程序将从其配置文件中获取服务设置。

示例:

假设您有一个名为MyServiceLibrary的项目。然后,您创建一个名为MyServiceHost的控制台应用程序,该应用程序引用MyServiceLibraryMyServiceLibrary项目将使用<system.serviceModel>文件中的MyServiceHost.exe.config设置(编译项目时app.config文件的内容)。 MyServiceLibrary项目中的app.config将被忽略。