我有一个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
的URL。那里我还指定了该服务应放在Foo.Services.BarService
命名空间中。我打算直接使用为我自动生成的
BarClient
类来使用该服务,而不是通过ChannelFactory<BarContract>
。