2011-01-14 38 views
2

我有了这个WCF服务合同(大量简化,但要注意它在命名空间):如何在WCF端点的XML配置中指定协定的名称空间?

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的添加服务引用设施。我指定了由其他人运行的BarService的URL。这也是我指定该服务应放在Foo.Services.BarService名称空间中的地方。

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

+0

服务或客户端配置是否存在问题?你是如何创建客户的? – 2011-01-14 08:51:31

回答

3

通过创建客户端添加服务引用不会重新从服务命名空间结构。所有创建的类型和合同都放入由服务引用名称定义的新名称空间中。所以我想你可以命名你的服务参考BarService。客户端配置必须遵循生成的合同的名称。

相关问题