wcf - 如何在 WCF 终结点的 XML 配置中指定协定的命名空间?

标签 wcf namespaces contract endpoint xml-configuration

我有这个 WCF 服务契约(Contract)(已大大简化,但请注意它所在的命名空间):

namespace Foo.Services.BarService
{
    [ServiceContract]
    interface BarContract {... }
}

在我的 app.config (客户端),我为一些服务配置了一个端点:

<endpoint address="..."
          binding="..."
          contract="Foo.Services.BarService.BarContract" />

但是,这会导致错误,指出在支持 BarService.BarContract 的客户端配置中找不到端点.我只能通过更改 contract 来消除此错误属性值为 BarService.BarContract (即通过删除命名空间)。

这是为什么呢?这个错误从何而来?为什么我不能提及契约类型的命名空间部分?这难道不会导致 WCF 找不到匹配的端点吗?


在下面回复@Ladislav Mrnka 评论中的问题:

  • 我说的是客户端。 (我忘了提到这一点;对此感到抱歉。) 这个错误可能来自服务器端吗?

  • 我生成了上述服务契约(Contract),以及一个 BarClient通过 Visual Studio 的添加服务引用工具实现它的类。我指定了 BarService 的 URL ,这是由其他人经营的。这就是我还指定服务应该放在 Foo.Services.BarService 中的地方。命名空间。

  • 我打算直接通过 BarClient 使用该服务为我自动生成的类,而不是通过 ChannelFactory<BarContract> .

最佳答案

通过添加服务引用 创建客户端不会从服务重新创建命名空间结构。所有创建的类型和契约都放置在由服务引用的名称定义的新命名空间中。所以我猜您将服务引用命名为 BarService。客户端配置必须跟在生成的合约名称之后。

关于wcf - 如何在 WCF 终结点的 XML 配置中指定协定的命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4688930/

相关文章:

java - 如何使 compareTo 方法尊重一般契约(Contract)?

c# - 通过 WCF 提供整个库的功能

ruby-on-rails - 将/profiles/1/edit/details 重写为/me/profile/details 的最佳方法?

namespaces - 使用什么命名空间来识别 JSF 2.x 中的导航标签?

PHP 使用命名空间时需要文件

c# - 在 Ruby 中,什么相当于 C# 中的接口(interface)?

wcf - 突然 WCF session 服务断开时的资源清理

c# - RIA 服务中的异常处理

.net - 是否可以使用 WCF 将 SoapException 转换为 FaultException?

c# - 哪个第 3 方契约(Contract)代码库最像 MS 的 .NET 4.0 库?