Asp.net 拦截页面对象创建以连接事件

Asp.net 拦截页面对象创建以连接事件,asp.net,c#-3.0,page-lifecycle,Asp.net,C# 3.0,Page Lifecycle,我正在寻找一种截取ASP.NET处理管道的方法,以便能够将事件处理程序注册到页面类上的所有事件。原因是,我需要维护一个组件的会话绑定实例,该实例需要从OnPreInit开始通知所有重要的Page事件 应用程序中有任意数量的Page子体,它们不在我的控制之下。因此,我不能像使用单个自定义子体那样使用通知会话绑定组件的方法,作为web应用程序中所有页面的基类 我认为创建一个定制的IHttpHandler或IHttpModule实现并不能解决这个问题。另请注意,我无法创建自定义的HttpApplica

我正在寻找一种截取ASP.NET处理管道的方法,以便能够将事件处理程序注册到
页面
类上的所有事件。原因是,我需要维护一个组件的会话绑定实例,该实例需要从
OnPreInit
开始通知所有重要的
Page
事件

应用程序中有任意数量的
Page
子体,它们不在我的控制之下。因此,我不能像使用单个自定义子体那样使用通知会话绑定组件的方法,作为web应用程序中所有页面的基类


我认为创建一个定制的
IHttpHandler
IHttpModule
实现并不能解决这个问题。另请注意,我无法创建自定义的
HttpApplication
子代。

这不是一个优雅的过程,尤其是当您需要处理多个页面事件时,但从理论上讲,完全可以从Global.asax中设置每个页面所需的处理程序

这里的诀窍是在
PreRequestHandlerExecute
方法中将代码添加到global.asax,从这里可以访问
HttpApplication
对象,从那里访问页面,然后注册事件。此过程是必需的,因为将为处理的每个页面创建一个新的页面实例

现在,您知道的其他选项要优雅得多,但这应该是您需要的。我发现了一个有用的教程,尽管围绕主题,它向你展示了整个过程

编辑:


在看到您的评论之后,是的,您可以简单地在一个定制的HttpModule中执行我上面所述的操作。我链接的这篇文章甚至向您展示了这个过程:)

您不知道要完成什么,但听起来您确实想要创建一个http模块或处理程序。你可能想看看global.asax有什么问题?global.asax不是我的。换句话说,我需要从外部侵入管道。我想知道创建自定义HTTP模块(
IHttpModule
)并为
HttpApplication.PreRequestHandlerExecute
事件注册处理程序是否是正确的方法-即
页面
实例是否已经可以通过
HttpContext
访问。是,创建自定义HTTP模块似乎是正确的方法。最初研究文档时,我看不清楚。谢谢