通过链接发现WCF服务

问题描述 投票:0回答: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 测试客户端使用链接进行搜索,它会起作用...... 我做错了什么?

web-services wcf webservice-discovery
1个回答
0
投票

当您使用 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>

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

© www.soinside.com 2019 - 2024. All rights reserved.