【问题标题】:WCF - Application is using client's app.config rather than WCF service's app.configWCF - 应用程序正在使用客户端的 app.config 而不是 WCF 服务的 app.config
【发布时间】:2013-12-08 19:01:47
【问题描述】:

在我的 VS 解决方案中,我创建了一个用作客户端的控制台项目,以及一个用于 WCF 服务的空项目。

然后我创建了 WCF 服务(创建了我的合同和服务类型并手动构建了 app.config),并在客户端项目中添加了对 WCF 服务项目的引用。

但是,当我在客户端调用 ServiceHost.Open() 时,端点没有加载。我最终确定我需要将所有配置信息放在客户端的 app.config 中,而不是服务的 app.config 中。

我不确定这是否正常,或者我做错了什么。过去,当我使用 WCF 项目模板时,情况并非如此。

【问题讨论】:

  • 配置取自 HOST PROCESS 的配置文件,即如果您在 ASP.NET 站点中托管 WCF 服务,则配置来自 web.config。这是许多人感到困惑的地方:如果您有一个带有一些配置的类库程序集,那么它将不会是 .NET 配置的来源。因此,在您的 Web 应用程序中查找服务器配置(如果您使用 ASP 托管),并为控制台客户端查找 app.config。为什么在客户端调用 Host.Open()?
  • 谢谢。我没有意识到这一点。我正在处理“Windows Communication Foundation Unleashed”,还没有生成元数据,所以我只是使用 ServiceHost 来确认一切都正确加载。我想先解决这个问题。

标签: wcf app-config


【解决方案1】:

是的,这很正常。每个 .NET 应用程序(客户端、服务、网站等)都有自己的配置文件。准确地说,它们有一个层次结构,但该层次结构的底端是应用程序所独有的。

如果您考虑一下,这是有道理的——客户端需要联系服务以询问其配置,但它需要知道端点信息才能尝试这样做。所以是的,正常的过程是客户端和服务在它们的配置文件中都有非常相似的信息。

如果您使用 Visual Studio 的内置工具为您完成所有工作,当您将服务引用添加到项目时,它将自动为您的客户端创建和/或编辑配置文件,从 WCF 公开的元数据端点复制为了这个目的。或者,您可以使用 WCF 配置编辑器工具来编辑您的客户端应用程序。

另外,请注意,实际上并没有强制您的客户端和服务器具有兼容的设置;例如您可以在一侧而不是另一侧更改许多缓冲区/图形/等的最大大小,并看到一些奇怪的行为。您需要确保两端都使用可相互使用的设置。

【讨论】:

  • 感谢您的信息。有了你的解释,这完全有道理。过去,我使用过 Visual Studio 的内置工具。我想更深入地了解配置是如何构建的,以及这种性质的事情。如果我没有手动完成所有这些,我就不会学习所有这些:)。
  • 没问题。请记住将最有帮助的答案标记为“已接受”,以保持网站顺利运行:)
猜你喜欢
  • 2013-08-17
  • 2013-07-04
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 2012-04-02
  • 1970-01-01
  • 1970-01-01
  • 2011-03-06
相关资源
最近更新 更多