Sto scrivendo un servizio di Windows con "strumento di stato" di accompagnamento. Il servizio ospita un endpoint di pipe denominato WCF per la comunicazione tra processi. Attraverso la named pipe, lo status tool può interrogare periodicamente il servizio per l'ultimo "status".WCF NamedPipe CommunicationException - "Il pipe è stato terminato. (109, 0x6d)."
Sulla mia macchina di sviluppo, non ho più indirizzi IP; uno di questi è una rete "locale" con indirizzo 192.168.1.XX. L'altra è la rete "aziendale", con un indirizzo 10.0.X.XX. Il servizio Windows raccoglie il traffico multicast UDP su un singolo indirizzo IP.
Il servizio di Windows ha funzionato fino a ora fino a quando utilizza l'indirizzo "192.168.1.XX". Segnala costantemente lo stato correttamente al client.
Non appena sono passato ad un altro, Indirizzo IP "corporate" (10.0.X.XX) e riavviato il servizio, ottengo continui "CommunicationExceptions" durante il recupero dello stato:
"There was an error reading from the pipe: The pipe has been ended. (109, 0x6d)."
Ora, Non penserei che l'indirizzo IP "richiesto" del client UDP debba avere nulla a che fare con la funzionalità dell'interfaccia Named-Pipe; sono pezzi completamente separati dell'applicazione!
Qui ci sono le pertinenti sezioni di configurazione WCF:
//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();
non vorrei che questo sia un problema di 'permessi' - Io corro il cliente con privilegi di amministratore - ma forse c'è una ragione specifica del dominio questo è rotto?
Che aspetto ha la traccia dello stack di eccezioni? Sei * sicuro * nient'altro è cambiato? Hai riavviato lo Strumento di stato dopo aver cambiato la configurazione del servizio? Potresti pubblicare la parte del tuo codice di Status Tool che istanzia il tuo rpoxy e fa la chiamata alla WCF? –
Aggiornerò la domanda lunedì, quando torno al lavoro.Un amico ha anche suggerito che l'indirizzo IP potrebbe essere una falsa pista, e la vera differenza potrebbe essere il valore di ritorno di particolari enumerazioni. Lo esaminerò anche io. – BTownTKD