2012-12-20 18 views
7

Diciamo che sto memorizzando nella cache uno ChannelFactory<T> e usandolo per creare canali. Questi canali vengono utilizzati per effettuare chiamate WCF ad altri servizi e vengono quindi smaltiti (in modo sicuro).Un ChannelFactory può diventare Faulted?

Devo preoccuparmi di una situazione in cui la cache ChannelFactory diventa danneggiata e quindi inutilizzabile per la creazione di nuovi canali? se è così, devo sostituirlo con un nuovo ChannelFactory?

Vorrei anche apprezzare un esempio concreto riproducibile per un caso in cui un errore ChannelFactory.

+0

Se si è interessati, è sempre possibile controllare lo stato prima dell'accesso come misura sufficiente per non accedere a un canale che è stato chiuso o guasto. – atconway

+0

@atconway Sto parlando di ChannelFactory in errore e non del canale .. Non voglio implementare la logica che ricrea le fabbriche dei canali se non devo ... –

+0

Stavo per fare la stessa domanda. Mi sembra che fintanto che i singoli canali siano gestiti correttamente, gli unici errori che si vedrebbero in ChannelFactory si verificherebbero durante l'istanziazione della classe. Hai avuto ulteriori problemi da allora? –

risposta

0

Non penso che in questo caso sia necessario preoccuparsi dello stato Fault. ChannelFactory cambia il suo stato in Faulted quando ha problemi durante l'apertura (cosa potrebbe accadere quando chiamate il metodo Open() o create il primo canale senza chiamare Open()).

var factory = new ChannelFactory<ITestService>(); 
try 
{ 
    factory.Open(); 
} 
catch 
{ 
    Console.WriteLine(factory.State); 
}