我正在寻找一种拦截ASP.NET处理管道的方法,以便能够将事件处理程序注册到Page
类的所有事件。原因是,我需要维护一个组件的会话绑定实例,该实例需要从Page
开始,通知所有重要的OnPreInit
事件。
应用程序中有任意数量的Page
个后代,这些都不在我的控制之下。因此,我不能使用像使用单个自定义后代那样的方法来通知会话绑定组件,作为Web应用程序中所有页面的基类。
我认为创建自定义IHttpHandler
或IHttpModule
实现不会解决问题。另请注意,我无法创建自定义HttpApplication
后代。
答案 0 :(得分:3)
执行您正在查看的内容并不是一个优雅的过程,特别是如果您需要处理多个页面事件,但理论上完全可以从Global.asax中设置您需要的处理程序对于每一页。
这里的技巧是将您的代码添加到PreRequestHandlerExecute
方法中的global.asax,从这里您可以访问HttpApplication
对象,从那里访问页面,然后注册你的活动。当为每个处理的页面创建新的页面实例时,此过程是必需的。
现在,您知道的其他选项更优雅,但这应该达到您需要的位置。我找到了一个有用的教程,虽然围绕主题展示了整个过程here。
修改强>
看到你的评论后,是的,你可以在一个自定义的HttpModule中简单地做我上面所说的。我链接的文章甚至向您展示了这个过程:)
答案 1 :(得分:0)
如果您不了解更多关于您要完成的工作,那么您确实想要创建一个http模块或处理程序。您可能需要查看this question