暴露net.tcp端点
我对如何在WCF中公开端点感到困惑
我有一个tcp端点和一个mex tcp端点。
当我尝试在服务主机中运行它时,我得到以下exception:
在服务MessageReaderService实现的合同列表中找不到合同名称“IMetadataExchange”。 添加ServiceMetadataBehavior到
配置文件或直接向ServiceHost启用对此合同的支持。
所以我从这个错误中得出结论,我需要添加一个服务行为来公开元数据。
所以我添加了这个行为:
但后来我得到了一个不同的错误:
ServiceMetadataBehavior的HttpGetEnabled属性设置为true,HttpGetUrl属性是相对地址,但没有http基址。 提供http基址或将HttpGetUrl设置为绝对地址。
- 那么现在我必须实际添加另一个端点(http)以通过mexhttpbinding公开元数据?
- 是否有一种通过tcp公开端点的简单方法?
两件事情:
(1)一旦您定义了服务行为,您当然也必须将其应用于服务!
(2)您不需要HTTP端点 – 您不需要拥有HTTP URL – 只需定义此服务行为,如下所示:
您的元数据现在可通过mexTcpBinding
端点获得 – 您无法使用HTTP浏览到它,但客户端绝对可以连接到它并使用它!
您可以使用WCF测试客户端validation这一点,然后转到其中
net.tcp://localhost:8082 (the base address)
要么
net.tcp://localhost:8082/mex (the mex address)
在这两种情况下,WCF测试客户端现在应该找到您的服务并能够发现其function。