ASP.net MVC记录页面视图

时间:2012-06-28 13:50:02

标签: asp.net-mvc logging

是否有一种简单的方法来记录任何用户点击的每个页面。 我想这将位于global.asax.cs文件中,这样我就可以将db页面的URL写入db表。

2 个答案:

答案 0 :(得分:3)

我找到了一种方法来完成这个问题,这似乎符合我的目的。

我使用PostAuthenticateRequestHandler方法,因为每次点击都会调用它。 我忽略任何空路径而只是“/”,因为这些不是实际页面命中。

//in global.asax.cs file

private void PostAuthenticateRequestHandler(object sender, EventArgs e)
{
   ///...///

   string extension = this.Context.Request.CurrentExecutionFilePathExtension;
   string path = this.Context.Request.CurrentExecutionFilePath;

   if (extension == string.Empty && path != "/")
   {
   PageVisitedLogModel pageVisitedLogModel = new PageVisitedLogModel
   {
       DateVisited = DateTime.Now,
       IPAddress = this.Context.Request.UserHostAddress,
       PageURL = this.Context.Request.RawUrl,
       Username = this.Context.User.Identity.Name
   };

   //then writes to log
   DataHelper.UpdatePageVisitedLog(pageVisitedLogModel);
}
}

答案 1 :(得分:0)

执行此操作的一种方法是使用全局操作过滤器,如this example中所示。这允许您为解决方案中的任何操作运行一些代码。