在我的VS解决方案中,我创建了一个控制台项目,我将其用作客户端,以及一个用于WCF服务的空项目。
然后我创建了WCF服务(创建了我的合同和服务类型并手动构建了app.config),并在客户端项目中添加了对WCF服务项目的引用。
但是,当我在客户端中调用ServiceHost.Open()时,端点未加载。我最终确定我需要将所有配置信息放在客户端的app.config中,而不是服务的app.config。
我不确定这是否正常,或者我做错了什么。过去,当我使用WCF项目模板时,情况并非如此。
答案 0 :(得分:0)
是的,这是正常的。每个.NET应用程序(客户端,服务,网站等)都有自己的配置文件。确切地说,它们具有层次结构,但该层次结构的底端对于应用程序是唯一的。
如果您考虑它,这是有道理的 - 客户端需要联系服务以询问其配置,但它需要知道端点信息才能尝试这样做。所以,是的,正常的过程是客户端和服务在配置文件中都有非常相似的信息。
如果您使用Visual Studio的内置工具为您执行所有操作,则在向项目添加服务引用时,它将自动为您的客户端创建和/或编辑配置文件,从WCF公开的元数据端点进行复制为了这个目的。或者,您可以使用WCF配置编辑器工具编辑客户端应用程序。
另请注意,实际上没有任何内容强制您的客户端和服务器具有兼容的设置;例如您可以在一侧更改许多缓冲区/图形/等的最大大小,而不是另一侧,并看到一些奇怪的行为。由您来确保两端都可以使用相互可用的设置。