返回页首
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 辅助线程完成并清理。
返回页首
文章来源于领测软件测试网 https://www.ltesting.net/