首先,我对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
将被忽略但不太确定。请给我一些有用的信息。谢谢!
答案 0 :(得分:2)
在配置文件方面,WCF库与.NET中的任何其他类库没有什么不同。类库将使用引用它的应用程序的配置文件 - 库项目模板中的app.config文件未被使用(我不确定为什么它甚至包含在内,说实话)。
通常,在开发WCF类库时,您会将app.config的相关<system.serviceModel>
部分复制到将托管服务的应用程序的配置文件(应用程序或Web)中
因此,要回答您的问题,服务库的app.config文件将被忽略,就像任何库的配置文件一样。托管服务的应用程序将从其配置文件中获取服务设置。
示例:
假设您有一个名为MyServiceLibrary
的项目。然后,您创建一个名为MyServiceHost
的控制台应用程序,该应用程序引用MyServiceLibrary
。 MyServiceLibrary
项目将使用<system.serviceModel>
文件中的MyServiceHost.exe.config
设置(编译项目时app.config文件的内容)。 MyServiceLibrary
项目中的app.config将被忽略。