2011-11-26 202 views
1

我正在基於我們已經實現我們的代碼的遺留應用程序的Web應用程序(ASP.NET 3.5/C#)上工作。該應用程序託管在裝有IIS 6的MS Server 2003的虛擬機上。跟蹤Web應用程序

隨機發生一些異常,如:「加載此程序集會產生不同的授權」,但未向我們提供有關應用程序中發生的位置/原因的更多信息。 由於這個原因,我們希望跟蹤Web應用程序以獲取儘可能多的有關其行爲的信息。

我們剛剛開始使用「NLog」跟蹤用戶活動和日誌文件中的請求/響應。然而,任何人都可以提出一些進一步的申請,以獲得更多信息?

由於部分代碼由於遺留應用程序而無法訪問,因此避免與代碼直接交互的解決方案(例如需要在代碼本身中實例化應用程序)將是可取的。

回答

1

您可以嘗試在應用程序池進程上使用adplus,並在應用程序拋出異常時生成轉儲。例如執行以下命令:

ADPlus -crash -iis -o c:\dumps 

將產生IIS的內存轉儲和當前正在運行的所有MTS/COM +包。默認情況下,它會針對第一次機會異常(可能已被處理的那些)創建小型轉儲,並在第二次更改異常(未處理的異常)上完全轉儲。如果你有興趣只在一個特定的池,可以使用其PID(here是信息如何得到它),然後運行:

ADPlus -crash -p <pid> -o c:\dumps 

獲得轉儲後,您可以將其加載到Visual Studio和嘗試調試您的應用程序(請記得正確配置您的符號路徑)

+0

+1 - 謝謝你的提示!我將安裝在我的系統上,如果能正常工作,請回來接受它。 – Francesco

1

我會建議使用Elmah。它非常酷,使用錯誤日誌記錄框架特別適用於asp.net。在那裏檢查http://code.google.com/p/elmah/

+0

感謝dasheddot您的答案。我們在生產中已經使用Elmah來記錄錯誤。然而,Elmah提供的信息不足以理解這些例外情況。 因此,我正在尋找更具體的東西。 – Francesco