2013-01-24 33 views
1

我想使用它的地址找到WCF服务。 我写了下面的代码:通过链接发现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测试客户端搜索,它的工作原理... 我在做什么错?

回答

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> 

起初,还能去除范围的查找条件。