1

我想使用它的地址查找 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 测试客户端进行搜索,它可以工作...我做错了什么?

4

1 回答 1

0

当您使用 WCF 测试客户端时,您没有使用发现功能。这是对服务的 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>

首先,还要删除查找条件中的范围。

于 2013-01-24T14:07:40.110 回答