Ich schreibe einen Windows-Dienst mit begleitenden "Status-Tool". Der Dienst hostet einen WCF-Pipe-Endpunkt für die Kommunikation zwischen Prozessen. Über die Named Pipe kann das Status-Tool den Dienst regelmäßig nach dem letzten "Status" abfragen.WCF NamedPipe CommunicationException - "Die Pipe wurde beendet. (109, 0x6d)."
Auf meiner Entwicklung Maschine, ich mehrere IP-Adressen haben; Einer von ihnen ist ein "lokales" Netzwerk mit einer Adresse 192.168.1.XX. Das andere ist das "Firmennetzwerk" mit einer 10.0.X.XX-Adresse. Der Windows-Dienst sammelt UDP-Multicast-Datenverkehr für eine einzelne IP-Adresse.
Der Windows-Dienst hat bis jetzt funktioniert, solange er die Adresse "192.168.1.XX" verwendet. Es meldet den Status regelmäßig korrekt an den Client.
Sobald ich auf der anderen Seite "Corporate" IP-Adresse (10.0.X.XX) und neu gestartet wird den Dienst eingeschaltet, erhalte ich kontinuierlich "CommunicationExceptions" beim Abrufen des Status:
"There was an error reading from the pipe: The pipe has been ended. (109, 0x6d)."
Jetzt, Ich würde nicht denken, dass die "beanspruchte" IP-Adresse des UDP-Clients irgendetwas mit der Funktionalität der Named-Pipe-Schnittstelle zu tun haben sollte; Sie sind völlig separate Teile der Anwendung!
Hier sind die relevanten WCF-Konfigurations Sektionen:
//On the Client app:
string myNamedPipe = "net.pipe://127.0.0.1/MyNamedPipe";
ChannelFactory<IMyService> proxyFactory =
new ChannelFactory<IMyService>(
new NetNamedPipeBinding(),
new EndpointAddress(myNamedPipe));
//On the Windows Service:
string myNamedPipe = "net.pipe://127.0.0.1/MyNamedPipe";
myService = new MyService(myCustomArgs);
serviceContractHost = new ServiceHost(myService);
serviceContractHost.AddServiceEndpoint(
typeof(IMyService),
new NetNamedPipeBinding(),
myNamedPipe);
serviceContractHost.Open();
Ich würde nicht denken, dies ist Thema einer ‚Berechtigungen‘ - Ich bin den Client mit Administratorrechten ausgeführt wird - aber vielleicht gibt es einige domänenspezifischen Grund das ist kaputt gegangen?
Wie sieht die Ausnahmestapelüberwachung aus? Bist du * sicher * nichts anderes? Haben Sie nach dem Wechsel der Servicekonfiguration das Statustool neu gestartet? Könnten Sie den Teil Ihres Status Tool-Codes posten, der Ihren rpoxy instanziiert und den WCF-Aufruf auslöst? –
Ich werde die Frage am Montag aktualisieren, wenn ich wieder an die Arbeit komme.Ein Freund schlug auch vor, dass die IP-Adresse ein Ablenkungsmanöver sein könnte, und der wirkliche Unterschied könnte der Rückgabewert bestimmter Enums sein. Ich werde das auch untersuchen. – BTownTKD