在开发企业Asp.netWeb应用时经常需要以日志的方式记录用户的访问信息, 以便了解访问本站的用户兴趣点在那里, 从而改进自己的站点, 提高用户的访问量。通常的做法编写一个记录日志的类, 然后在每个页面中调用该类的以记录用户的访问。这样的方法在站点的页面较少的时候可行, 但是当项目比较大时, 这种方法就显得比较繁琐。另外一种情形是原来的系统并没有日志功能, 如果用上面的方法来添加日志功能, 则必须修改整个网站的每个页面, 工作量很大。
本文提出了一种基于HttpModule创建用户页面访问日志的方法, 它不需修改原站点工作正常的页面, 就可实现记录本站点用户访问日志的功能, 这比原来的方法简便不少, 且维护也很方便。
1 HttpModule简介
要了解HttpModule的工作原理, 首先得了解一下ASP.NET请求的处理过程。
ASP.NET请求处理过程是基于管道模型的, 在模型中ASP.NET把http请求传递给管道中的所有Module。每个Module都接收http请求并有完全控制权限。Module可以用任何自认为适合的方式来处理请求。一旦请求经过了所有HttpModule, 就最终被H TTP处理程序处理。HTTP处理程序对请求进行一些处理, 并且结果将再次经过管道中的HttpModule。如图1所示。
HttpModule是实现了System.Web.IHttpM odule接口的.NET组件。这些组件通过在某些事件中注册自身, 把自己插入ASP.NET请求处理管道。当这些事件发生的时候, ASP.NE T调用对请求有关的HttpModule, 这样该Mod ule就能处理请求了。
本方法的工作原理就是制作一个负责日志记录的HttpModule, 并在合适的事件中注册, 当用户的请求到来时, 记录相应的数据以完成日志记录。
2 创建页面访问日志的IHttpModule
HttpModule要实现IHttpModule接口的下面一些方法 (如表1) 。
在此, 我们首先在站点的App_Code文件夹中创建一个实现了上述方法的类MyH ttpModel。其关键代码如下:
为了记录用户的访问数据, 本文设计了一个名为UserLog (id, usersession, IP, dat etime, url) 的简单表。其中id是编号, users ession记录注册用户标识, IP表示访问者的IP地址, datetime表示访问时间, 它由SqlSer ver在插入数据时自动记录, url表示访问者请求的页面。
这个类的主要内容是一个用来记录用户访问数据的方法onRequest, 另外就是把此方法注册到AcquireRequestState事件中。
接下来要在web.config注册这个HttpM odul.
在web.config中的
这样注册就完成了。
接下来就可在几个不同IP的计算机上测试一下, 看看自定义HttpModule是否工作正常。
另外要作的一件事就是作一个简单的页面用以显示所有的日志记录 (如图2) 。
3 结语
通过以上制作过程可知, 本文所提出的利用HttpModule创建用户页面访问日志方法实现简单, 而且不需对原页面作任何的修改。它可记录任何用户对页面的访问, 方便管理员考查用户对自己站点中那部分最感兴趣, 从而改进自己的站点。它的缺点就是只能针对于aspx的页面, 如要记录对普通的html页面的访问则必需另作设置。
摘要:本文给出了一种基于HttpModule的记录用户访问日志的方法, 该方法实施简便, 且不需要对站点中的页面作任何修改。
关键词:HttpModule,访问日志
参考文献
[1] (意) Dino Esposito[著], 罗兵, 顾雁宏, 詹文军[译].精通ASP.NET程序设计[M].清华大学出版社, 2006.7.
[2] skyaspnet.ASP.NET HttpModule原理.[EB/OL].http://blog.csdn.net/skyasp net/archive/2009/02/05/3865126.asp x.
[3] Microsoft.MSDN Library for Visual S tudio[M/CD], 2008, 12.
【基于HttpModule的页面访问日志】相关文章:
关于页面访问升级的紧急通知05-08
页面访问升级06-16
页面访问升级111nene06-21
一种基于访问控制的搜索引擎01-05
基于Java的数据库访问技术研究09-10
在ASP/ASP.net架构下实现对访问者基于IP地址的访问控制09-11
基于新课标的课堂教学改革研修日志05-08
Dedecms搜索页面调用全站文章的方法05-04