我想使用其地址查找 WCF 服务。 我写了以下代码:
var uri = "http://bla-blabla.svc"
var obj = new DiscoveryClient(new UdpDiscoveryEndpoint());
var findCriteria = new FindCriteria();
findCriteria.Duration = TimeSpan.FromSeconds(10);
findCriteria.Scopes.Add(new Uri(uri));
var findResponse = obj.Find(findCriteria);
但是什么也没发现... 如果我尝试使用 WCF 测试客户端使用链接进行搜索,它会起作用...... 我做错了什么?
当您使用 WCF 测试客户端时,您没有使用 Discovery 功能。这是对服务的 wsdl/元数据的经典调用。
通过在主机或配置中添加某些内容,您的目标服务应该是可发现的。
代码
ServiceHost host = new ServiceHost(...);
host.AddServiceEndpoint(new UdpDiscoveryEndpoint());
ServiceDiscoveryBehavior discovery = new ServiceDiscoveryBehavior();
host.Description.Behaviors.Add(discovery);
host.Open();
配置
<services>
<service name = "MyService">
<endpoint
kind = "udpDiscoveryEndpoint"
/>
...
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceDiscovery/>
</behavior>
</serviceBehaviors>
</behaviors>
首先,还要删除查找条件中的范围。