我已经有这份WCF服务合同(大量简化,但要注意它所在的名称空间):

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的评论中的问题:

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

  • 我生成了上述服务合同,以及 BarClient 通过Visual Studio的班级来实现它 添加服务参考 设施。我指定了URL BarService, ,由其他人经营。这也是我还指定该服务应放入的地方 Foo.Services.BarService 名称空间。

  • 我打算直接通过 BarClient 为我自动生成的上课,而不是通过 ChannelFactory<BarContract>.

有帮助吗?

解决方案

创建客户端 添加服务参考 不会从服务重新创建名称空间结构。所有创建的类型和合同都置于由服务参考名称定义的新名称空间中。因此,我想您命名了您的服务参考barservice。客户端配置必须遵循生成合同的名称。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top