一次有趣的测试

最近一直被HttpApplication所困扰。说起来,起因就是因为想在HttpModule中捕获Session_End事件。因为项目对松耦合的要求(在Global.asax.cs中无法预知事件的捕获者是谁或者是否存在,全凭web.config的配置来定),所以必须寻找到一种方式来Hook HttpApplication的Session_End方法。
经过长时间研究,发现System.Web.Dll没有提供额外的机制从SessionStateModule中获得设置事件句柄的机会(可参看我MSN上的Blog:是MS故意这么设计还是根本就是一个Bug?)
后来看了很多相关的文章(博客园最多了),又设计从HttpModule的Dispose方法中寻找出路,结果全部失败。于是我设计了一个全程跟踪HttpApplication和HttpModule运行步骤的一个Solution,结果令人啼笑皆非。
测试说明
测试项目源文件
相信很多人会有兴趣。如果有谁能够给我出点主意的话,那就再好不过了。

补充:R.Z.提醒我,监控HttpApplication的Disposed事件。
经再次测试证实,Module中的Application_Disposed事件发生在Module的Dispose之前的同一线程中,依然与Session_End无关。
posted @ 2005-06-07 23:10  双鱼座  阅读(2388)  评论(5编辑  收藏  举报