【问题标题】:How to keep track of pages visited by the user如何跟踪用户访问的页面
【发布时间】:2013-12-03 20:53:02
【问题描述】:

我正在处理一个 .Net(VB.Net) 项目。我需要跟踪我的用户不断访问的页面。 例如我有一些用户说

Userid   Username
1         Pravin
2         James
3        Daniel

我的项目中有一些页面说

Page1.aspx,
Page2.apsx
Page3.aspx..
like this..

我想通过每天访问的次数来跟踪哪个用户访问了哪个页面,并将其保存在sqlserver的表中。

请在这种情况下帮助我..

【问题讨论】:

  • @ZafKhan:我尝试过实现一个 .vb 类,并从每个页面的 Load 事件中调用它。在 .VB 类文件中,我提出了插入页面名称、用户 ID 和访问日期时间的逻辑...但这似乎不是一种有效的方式..所以我需要一些有效的方法来做到这一点..
  • 是的,它看起来确实效率低下,因为您没有添加对该页面的访问量,因此这意味着每个访问者每天可能有几条记录,并且每个页面也许您可以添加一个名为QtyVisits 到您的 Sql 表?并执行“更新记录查询”,如果记录不存在,这自然会引发错误,但您可以捕获错误并在这种情况下执行“添加新记录”?我会冒险猜测这可能会消耗更多时间,所以我不确定它是否更有效。
  • @ZafKhan :是的..这将消耗更多时间,因为需要更改我项目中大约 600 页的所有页面......是否有任何替代方案而不是在每个页面的页面加载中写入..
  • 您肯定只会更改您班级中的代码吗?不是每一页?因为调用约定是一样的?
  • 不..我的意思是说..我必须在每个页面中添加.vb类调用..这对于600-700页效率不高..

标签: c# asp.net .net vb.net iis


【解决方案1】:

我想你在看的是Application_BeginRequest

收到应用程序请求时触发。这是为请求触发的第一个事件,该请求通常是用户输入的页面请求 (URL)。
请注意,每个请求都会触发此事件(图像、css、java-scritp ...)
您需要检查.aspx 扩展名

编辑-1

我认为在BeginRequest 上找到用户会很困难,您可以为此使用Application_AuthenticateRequest

void Application_PreRequestHandlerExecute(object sender, EventArgs e)
{
    var page = (Context.Handler as System.Web.UI.Page);
}

这里是有关该事件的更多详细信息
.NET Application_BeginRequest - How to get User reference?

【讨论】:

  • @PravinKumar 乐于提供帮助 :)
  • 我还需要你的建议。如何防止同一页面上的“按钮单击”等页面回发请求..
  • @PravinKumar 你无法阻止来自.cs 页面的回发。为此,您需要使用 java-script jQuery。你可以问一个关于 SO 的问题。
  • 我的意思是,对于回发请求,'Application_PreRequestHandlerExecute' 事件也会引发......如何在此处理程序中过滤回发事件..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-28
  • 2014-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-04
相关资源
最近更新 更多