最近,在工作的ASP.NET项目的一些代码工作.我们需要一个跟踪工具来获取用户活动的基本指标(页面点数等),我们将在
Session
中跟踪它们,然后通过
Global.asax
的Session_End将数据保存到DB中.
我开始黑客走了,初始代码工作正常,更新每个页面上的DB加载.我想删除每个请求上的这个DB命中,只需依靠Session_End来存储所有的数据.
所有跟踪代码都封装在Tracker类中,包括基本上包装Session变量的属性.
问题是当我在Session_End方法中执行Tracker.Log()时,跟踪代码中的HttpContext.Current.Session
与NullReferenceException
失败.现在,这是有道理的,因为HttpContext
始终与当前请求相关,当然在Session_End中没有要求
我知道Global.asax有一个Session属性,返回一个HttpSessionState,实际上似乎工作正常(我最终将其注入到跟踪器中)..
但是我很好奇,可以从Global.asax外面获得与Global.asax使用的HttpSessionState对象相同的引用吗?
先谢谢你们,我很感激你的意见.