如何在WCF端点的XML配置中指定合同的名称空间?
-
11-10-2019 - |
题
我已经有这份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的班级来实现它 添加服务参考 设施。我指定了URLBarService
, ,由其他人经营。这也是我还指定该服务应放入的地方Foo.Services.BarService
名称空间。我打算直接通过
BarClient
为我自动生成的上课,而不是通过ChannelFactory<BarContract>
.
解决方案
创建客户端 添加服务参考 不会从服务重新创建名称空间结构。所有创建的类型和合同都置于由服务参考名称定义的新名称空间中。因此,我想您命名了您的服务参考barservice。客户端配置必须遵循生成合同的名称。
不隶属于 StackOverflow