拦截页面对象创建以挂钩事件

时间:2010-09-11 21:13:04

标签: asp.net c#-3.0 page-lifecycle

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

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

我认为创建自定义IHttpHandlerIHttpModule实现不会解决问题。另请注意,我无法创建自定义HttpApplication后代。

2 个答案:

答案 0 :(得分:3)

执行您正在查看的内容并不是一个优雅的过程,特别是如果您需要处理多个页面事件,但理论上完全可以从Global.asax中设置您需要的处理程序对于每一页。

这里的技巧是将您的代码添加到PreRequestHandlerExecute方法中的global.asax,从这里您可以访问HttpApplication对象,从那里访问页面,然后注册你的活动。当为每个处理的页面创建新的页面实例时,此过程是必需的。

现在,您知道的其他选项更优雅,但这应该达到您需要的位置。我找到了一个有用的教程,虽然围绕主题展示了整个过程here

修改

看到你的评论后,是的,你可以在一个自定义的HttpModule中简单地做我上面所说的。我链接的文章甚至向您展示了这个过程:)

答案 1 :(得分:0)

如果您不了解更多关于您要完成的工作,那么您确实想要创建一个http模块或处理程序。您可能需要查看this question