通过链接发现WCF服务

时间:2013-01-24 07:28:59

标签: wcf discovery

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

1 个答案:

答案 0 :(得分:0)

使用WCF测试客户端时,您未使用“发现”功能。这是对服务的wsdl / metadata的经典调用。

通过在主机或配置中添加内容,您的目标服务应该是可发现的。

代码

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>

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