我有这个 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
实现它的类。我指定了由其他人运行的 URL 。那就是我还指定应该将服务放在命名空间中的地方。BarService
Foo.Services.BarService
我打算通过为我自动生成的类直接使用该服务
BarClient
,而不是通过ChannelFactory<BarContract>
.