Asp.net

未處理的異常導致應用程序崩潰,日誌中顯示“EventType clr20r3,P1 w3wp.exe”,但沒有詳細資訊

  • November 16, 2018

在生產伺服器上,當 ASP .NET 應用程序崩潰時,我可以從系統事件查看器中看到此事件:

EventType clr20r3,P1 w3wp.exe,P2 6.0.3790.3959,P3 45d691cc,

P4 app_web_default.aspx.cdcab7d2,P5 0.0.0.0,P6 4b2e4bf0,P7 4,P8 4,P9

system.dividebyzeroexception,P10 NIL。*

它屬於“.NET 執行時 2.0 錯誤報告”類別。

但我找不到屬於“ASP.NET 2.0.50727.0”類別的事件,它可以為我提供這樣的詳細視圖:

An unhandled exception occurred and the process was terminated.  
Application ID: /LM/W3SVC/505951206/Root  
Process ID: 1112  
Exception: System.DivideByZeroException  
Message: Attempted to divide by zero.  
StackTrace:    
  at _Default.Foo(Object state)  
  at System.Threading.ExecutionContext.runTryCode(Object userData)  
  at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)  
  at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)  
  at System.Threading._ThreadPoolWaitCallback.PerformWaitCallbackInternal(_ThreadPoolWaitCallback tpWaitCallBack)  
  at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback(Object state)  
For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp

我的開發機器上有第二個事件,是因為那里安裝了 Visual Studio 嗎?如果是這樣,我該如何禁用它以便模擬生產環境?

有時您可能會在 Windows 事件日誌中看到這個可怕的錯誤:

EventType clr20r3、P1 w3wp.exe、P2 6.0.3790.3959、P3 45d6968e、P4 dp.ui、P5 3.9.7.55、P6 4b49a307、P7 62e、P8 0、P9 system.stackoverflowexception、P10 NIL。

如您所見,它不清楚並且沒有堆棧跟踪,並且您對 P1、…、P10 和任何數字一無所知。您知道其中最糟糕的部分是什麼;如果它不在日誌中,唯一讓你不睡覺並讓你許願的東西,是的!“dp.ui”消息。

原因

好的,除了所有的笑話和願望之外,當發生無限循環或方法呼叫時,會引發異常“system.stackoverflowexception”,因此您應該檢查所有源中是否存在任何遞歸方法呼叫,您可以啟動 Visual Studi 進行調試。但是,即使您的應用程序不是企業級的,也並非始終可行。所以你必須用Google搜尋 P1,…,P10。我代替你做的,所以請坐下來放鬆一下!

P1:發生此錯誤的應用程序名稱

P2:應用程序版本

P3:應用程序時間戳

P4:程序集/模組名稱

P5:程序集/模組版本

P6:程序集/模組時間戳

P7:MethodDef

P8:IL 偏移量

P9:異常名稱(散列,因為名字太長)

解決

很明顯,我們需要找到 P7、P8。IL Disassembler 是 Visual Studio 中包含的一個工具,它將幫助我們做到這一點。

  1. 執行 IL Disassembler,然後打開你的庫。
  2. 菜單:view -> MetaInfo -> Show!,注意菜單的檢查列表,尤其是 Raw 複選框。
  3. 將出現一個對話框,搜尋組合0600062e您將看到該類的 MethodName,通過查找您將看到第一個 TypeDef 聲明該類。就這樣!

當你進入你的應用程序時,你可能會看到一個遞歸呼叫,你應該檢查使這個循環退出的條件!

在 Windows 和服務應用程序中,此異常可能如下所示,您應該通過“IL Disassembler”檢查“sib.infobase.workflow.services.exe”:

事件類型 clr20r3,P1 sib.infobase.workflow.services,P2 1.0.2740.20114,P3 468a74f5,P4 sbpscs,P5 1.0.2740.20087,P6 468a74be,P7 1c,P8 120,P9 zxkyzcs5wacordmkttdkr0NILr.os

如果您在網上沖浪,您可能會看到 Microsoft 準備的解決方案:http: //support.microsoft.com/kb/911816,但對於此異常,它可能無法正常工作。

更多資訊

報錯桶參數的查找方法

引用自:https://stackoverflow.com/questions/1937931