2012-09-17 84 views
0

我想知道如何正確關閉channelFactory。事實上,我使用的是:如何正確關閉通道工廠?

try 
{ 
    factory.Close(TimeSpan.FromSeconds(0.25)) 
} 
catch 
{ 
    factory.Abort(); 
} 

但到ServiceHost的一面,和未處理的異常到達域級別(應用程序的頂層)。 我不明白爲什麼服務主機不捕獲異常,並使用我配置的IErrorHandler處理異常。

我這是怎麼配置的ErrorHandler:

IErrorHandler handler = new ErrorHandler(); 
foreach (var channelDispatcher in host.ChannelDispatchers.Select(d => d as ChannelDispatcher).Where(d => d != null)) 
{ 
    channelDispatcher.ErrorHandlers.Add(handler); 
} 
+0

向我們展示你如何設置IErrorHandler –

+0

我有編輯你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

+0

好的,對不起...... –

回答

0

你應該檢查一下你的工廠爲空調用中止()之前:

try 
{ 
    factory.Close(TimeSpan.FromSeconds(0.25)) 
} 
catch 
{ 
    if (factory != null) 
    { 
     factory.Abort(); 
    } 
    throw; 
}