2013-01-24 86 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> 

起初,還能去除範圍的查找條件。