返回頁首
ASP
ASP 應用程序通常在 dllhost 或 inetinfo 進程中運行,具體取決于隔離級別。例如,中級(它在 Windows NT_ 中不可用)和高級使用 dllhost.exe,而低級總是使用 inetinfo。每個使用 ManagedExceptionInjector 組件的 ASP 應用程序都不僅必須創建該對象并調用 Inject,而且必須在 Application 變量內部存儲對它的引用。以下為完成該工作的 ASP 代碼(為了簡潔起見,省略了錯誤處理):
Dim oInjector
Set oInjector = Server.CreateObject(
"NetInteropServicesEngine.ManagedExceptionInjector")
Set Application("ManagedInjector") = oInjector
需要在應用程序 OnStart 事件內部進行有關調用,以便在進程內部注入所有必需的掛鉤。這可以確保在進程中的其他任何客戶端導致對 CCW 調用 SetErrorInfo 之前進行有關調用;否則,無法設置掛鉤。應當將該調用放置在該事件處理程序的開頭以及其他任何代碼之前。
通過在應用程序變量中存儲對象,我們可以在應用程序 On End 事件中訪問它,然后調用 UnInject 方法。該對象必須具有單元靈活性。換句話說,必須可以從進程內部的任何單元中訪問它,以便能夠將其存儲在應用程序變量中。為此,該對象使用 CoCreateFreeThreadedMarshaler 函數聚合了自由線程封送拆收器。
當 Web 應用程序結束(因為 Web 服務器已經重新啟動,或者特定應用程序已經卸載)時,應用程序 On End 事件將被調用(這只對通過高隔離級別運行的應用程序可用)。UnInject 方法只是通知 ManagedExceptionLoggerTask 輔助線程完成并清理。
返回頁首
文章來源于領測軟件測試網 http://www.kjueaiud.com/