我有这个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的评论如下:
我在谈论客户端。 (我忘了这一点;对不起。) 这个错误可能来自服务器端吗?
我通过Visual Studio的添加服务参考工具生成了上述服务合同以及实现它的BarClient
类。我指定了由其他人运行的BarService
的网址。我还指定该服务应放在Foo.Services.BarService
名称空间中。
我将直接通过自动为我生成的BarClient
类使用该服务,而不是通过ChannelFactory<BarContract>
。
答案 0 :(得分:3)
通过添加服务引用创建客户端不会从服务重新创建名称空间结构。所有创建的类型和合同都放在由服务引用名称定义的新名称空间中。所以我猜你的服务引用名为BarService。客户端配置必须遵循生成的合同的名称。