2012-10-26 34 views
4

在我的Web應用程序中,我有一種單向異步WCF服務。在這個服務中,我想捕獲所有例外,就像我在global.asax Application_Error中所做的那樣。 我試圖處理這些事件:捕獲當前線程中的所有異常

AppDomain.CurrentDomain.UnhandledException += (s,e) => { //some logic }; 
AppDomain.CurrentDomain.FirstChanceException += (s,e) => { //some logic }; 

甚至嘗試:

//this one is for Win Forms Application 
Application.ThreadException += (s,e) => { //some logic }; 

//this one is for Web Application 
HttpContext.Current.ApplicationInstance.Error += (s,e) => { //some logic }; 

但所有這些處理器都達到了。

任何想法,我還能嘗試什麼?

+1

您需要發佈線程本身的代碼,否則,沒有足夠的信息來指導您。 –

+0

@jgauffin:感謝您的建議。 – Gev

回答

2

如果您將這些代碼行放入網頁中,它們將會丟失。爲什麼?因爲網頁有一個有限的生命週期。爲了讓您的事件處理生存下來,您需要將其放入全局asax文件中。

+1

這不是一個網頁,也沒有ASAX文件。 –

+0

@HenkHolterman:Global.asax對於ASP.NET中的WCF很好用 – jgauffin

+0

@ SlimH2S你讀過這個問題了嗎? – Gev

2

WCF允許您將實現IErrorHandler的對象插入到分派器的Errorhandler中。

MSDN page有示例代碼。

+0

服務是一種方式,分派器是否能夠處理這些錯誤? – Gev

+0

http://msdn.microsoft.com/en-us/magazine/cc163537.aspx#S1 – Gev

+0

我知道OneWay是什麼,我不明白爲什麼'正常'錯誤攔截不起作用。 –