ho un self hosted servizio WCF utilizzando il protocollo TCP duplex netta callbackWcf callback tcp duplex rete solo 1 modo violata
sul lato client, ascolto su evento in errore su Canale e ChennelFactory. quando il canale è in errore, il client ricrea il canale e ri-abbona.
sul lato server, memorizzo il canale di richiamata e un negozio un riferimento del canale chiamando lo OperationContext.Current.Channel
in modo da poter ascoltare l'evento guasto e chiuso su questo canale. In caso di errore, il server rimuoverà quell'iscritto.
Questo è il lavoro il più delle volte fino a poco tempo ho osservato un comportamento imprevisto: il canale di callback viene violata sul server, ma il canale sembra a posto sul lato client, questo porta al cliente non sottoscrivere nuovamente mentre il server già rimosso quell'abbonato e il cliente non riceveranno alcuna richiamata.
Ho pensato a una comunicazione duplex, se un capo ha rilevato un errore, il canale duplex dovrebbe essere guasto.
sessione affidabile è abilitato e il timeout è molto lungo (2 ore) (forse questo può conduce al cliente finale colpa non rilevamento abbastanza veloce?)
Qualcuno potrebbe spiegare perché questo sta accadendo?
Un'altra domanda sarebbe il motivo per cui è comunque colpa? Ho 40 client collegati ma il server avrebbe rilevato un client casuale guasto in un momento casuale.