WCF Discovery funktioniert einfach nicht
Ich versuche, fügen Sie ad-hoc-Entdeckung, um einen einfachen WCF-service client-setup (derzeit durchgeführt durch self-hosting in einer Konsolenanwendung). Debuggen mit VS2010 auf windows 7, und das tun, was ich kann, finden Sie im online-tutorial, aber immer noch - die Entdeckung client einfach nichts findet. Unnötig zu sagen, wenn ich öffnen Sie einen client, um die richtige service-endpoint kann ich den Zugriff auf den service von den Kunden.
service-code:
using (var selfHost = new ServiceHost(typeof(Renderer)))
{
try
{
selfHost.Open();
...
selfHost.Close();
service-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>
client discovery-code:
DiscoveryClient discoveryClient = new DiscoveryClient(new UdpDiscoveryEndpoint());
var criteria = new FindCriteria(typeof(IRenderer)) { Duration = TimeSpan.FromSeconds(5) };
var endpoints = discoveryClient.Find(criteria).Endpoints;
Die "Endpunkte" - Sammlung kommt immer leer aus. Ich habe versucht, läuft der Dienst und-client aus dem debugger von der Kommandozeile aus ein admin-Befehl-Linie - alles, aber ohne Erfolg (alles auf der lokalen Maschine natürlich, nicht zu mantion ich werde es brauchen, läuft auf meinem gesamten Subnetz schließlich)
Jede Hilfe wäre willkommen 🙂
- Ich habe auch versucht, indem eine Ankündigung Endpunkt in der serviceDiscovery Verhalten - das hat nicht helfen, wie gut
- gibt es eine app.config info für den Kunden?
- auch haben Sie versucht, indem Sie einen Rahmen?
- Ja, der client-app.config wurde automatisch generiert svcutil.exe. Habe auch versucht mit Security=none auf der service-Seite (die entfernt die Rolle, die von der client-app.config).
- Und Nein, nicht versuchen Sie, ein Umfang, vor allem da ich habe nicht gesehen ein anständiges Beispiel 🙂 - was ist der einfachste Weg, dies zu tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist ein super einfaches Entdeckung Beispiel. Es wird keine config-Datei, es ist alles c# - code, aber man kann wohl Anschluss die Konzepte in eine config-Datei.
Anteil dieser Schnittstelle zwischen host-und-client-Programm (Kopie an jedes Programm für jetzt)
fügen Sie diesen code in host-Programm
fügen Sie diesen code in das client-Programm
auf dem host, rufen Sie einfach die WcfTestHost_Open () - Funktion, dann schlafen für immer oder so etwas.
auf dem client, der diese Funktionen ausführen. Es dauert eine Weile, für einen host zu öffnen, so gibt es mehrere Verzögerungen hier.
host Ausgabe Aussehen sollte
client Ausgabe Aussehen sollte
dies ist ernsthaft das minimum, ich könnte mit einer Entdeckung Beispiel. Dieses Zeug wird ziemlich Komplex schnell.
Verdammt! es war die firewall... aus irgendeinem Grund alle UDP-Kommunikation war blockiert - durch deaktivieren der firewall hat das problem gelöst. Jetzt brauche ich nur um herauszufinden, die richtige firewall Konfiguration...