Sto cercando di aggiungere il rilevamento ad-hoc a una semplice configurazione del client-servizio WCF (attualmente implementata da self hosting in un'app console). Eseguire il debugging con VS2010 su Windows 7 e fare tutto ciò che posso trovare nel tutorial online, ma ancora - il client di scoperta non trova nulla. Inutile dire che se apro un client all'endpoint del servizio corretto posso accedere al servizio dal client.WCF Discovery semplicemente non funziona
codice di servizio:
using (var selfHost = new ServiceHost(typeof(Renderer)))
{
try
{
selfHost.Open();
...
selfHost.Close();
servizio app.config:
<?xml version="1.0"?>
<configuration>
<system.serviceModel>
<services>
<service name="TestApp.Renderer">
<host>
<baseAddresses>
<add baseAddress="http://localhost:9000" />
</baseAddresses>
</host>
<endpoint address="ws" binding="wsHttpBinding" contract="TestApp.IRenderer"/>
<endpoint kind="udpDiscoveryEndpoint"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceDiscovery/>
<serviceMetadata httpGetEnabled="True"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
cliente codice scoperta:
DiscoveryClient discoveryClient = new DiscoveryClient(new UdpDiscoveryEndpoint());
var criteria = new FindCriteria(typeof(IRenderer)) { Duration = TimeSpan.FromSeconds(5) };
var endpoints = discoveryClient.Find(criteria).Endpoints;
La collezione 'endpoint' viene sempre fuori vuoto. Ho provato a eseguire il servizio e il client dal debugger, da una riga di comando, da una riga di comando dell'amministratore - tutto, ma senza alcun risultato (tutto sul computer locale, ovviamente, non a gestione avrò bisogno che funzioni su tutta la mia sottorete eventualmente)
Qualsiasi aiuto sarebbe apprezzato :-)
Ho anche provato ad aggiungere un annuncio endpoint nel servizio. Il comportamento di Discovery, anche questo non ha aiutato – kbo
ci sono informazioni app.config per il client? –
hai anche provato ad aggiungere un ambito? –