2012-07-11 81 views
1

我有一個IIS 7.5上運行的C#WCF應用程序。獲取IIS 7.5和C#的堆棧跟蹤每個異常

如果拋出異常,我得到通用請求失敗頁面。爲了找到有罪的代碼,我想得到一個完整的堆棧跟蹤,包括行號和文件名。我怎樣才能做到這一點?

是否直接返回堆棧或記錄在服務器上並不重要,只要我能看到是什麼導致錯誤。

更新:感謝迄今爲止的答案。不幸的是我是一個IIS/c#newbee。有沒有教程或一步一步的指示?到目前爲止,我還不知道如何處理答案。

+1

你看過elmah http://code.google.com/p/elmah/ – 2012-07-11 10:50:06

回答

1

你可以使用兩個事件在代碼中調用一些記錄功能

AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); 

Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException); 

也,你應該在你的服務行爲的配置設置includeExceptionDetailInFaults=true

+0

對不起,我對C#和IIS很陌生。我不知道該把這東西放在哪裏。你能給我更多的信息嗎? – BetaRide 2012-07-11 10:50:36

+0

前兩個示例應該在應用程序生命週期的早期階段進行調用,您還需要編寫實際記錄錯誤的函數,以下是詳細信息:http://msdn.microsoft.com/en-us/library/ system.appdomain.unhandledexception.aspx,第三個例子應該放在你的'web.config'文件的'ServiceBehaviour'部分 – paul 2012-07-11 11:00:12

0
  • 認沽呼叫記錄錯誤。 ASP.Net Tracing功能完美適用於此任務。

  • 或者冒出傳入和記錄Exception.StackTrace的日誌記錄函數的異常。

  • 使用AppDomain.CurrentDomain.UnhandledException @paul提到一次犯規。

0

我加了一個程序我在版本叫ExceptionTrace到http://stackdump.codeplex.com/項目4.1 Beta版,這將跟蹤所有產生的異常沒有在代碼中的任何改變。它只將自己附加爲調試器,並偵聽所有生成的異常。