【问题标题】:Session_Start not firingSession_Start 未触发
【发布时间】:2013-09-18 20:42:07
【问题描述】:

我们有一个 ASP.NET 2.0 网站,上面有一些旧的经典 asp 页面。有一个login.asp 页面和home.aspx 页面。对于经过身份验证和授权的用户,Login.asp 页面被重定向到 home.aspx。

我们想要统计访问该网站的用户数量。如果用户达到某个指定值,我们将显示一些带有一些信息的弹出窗口。我们将应用程序变量存储在 global.asax 文件中。请为 global.asax 截取以下代码

Protected Overloads Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
    Application("Count") = 0
End Sub

Protected Overloads Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)        
    Application("Count") = CInt(Application("Count"))+ 1        
End Sub

我正在访问 Home.aspx 的 PageLoad 方法上的 Application("Count")。

当我使用 url http://localhost/login.asp 打开浏览器并成功登录时,计数永远不会增加。如果我去http://localhost/home.aspx,计数会增加。看起来当 login.asp 重定向到 home.aspx 时,它不会调用 global.asax 上的 session_start。

我对经典asp不是很熟悉。最终用户始终来自 login.asp。

从 global.asax 文件中访问正确递增的应用程序变量的最佳方法是什么?

【问题讨论】:

  • 首先我想说的是,这不是预测用户的好方法 - `application("count")` 指的是一个静态列表,如果不是只有一个,如果你在网络花园上运行您的网站。会话开始触发以及所有蜘蛛和机器人,以及默认情况下不允许 cookie 的用户。也许另一种选择,但不是更好的一种,是在会话上设置一个变量,如果没有设置,那么你增加计数器。
  • 我没有看到一个明显的答案,它看起来是正确的,但是你应该知道,如果你在 session_?End 中减少计数? (不记得名字了),它需要一段时间才能减少。 不活动 (x = SessionTimeout) X 分钟后,观看结束。
  • 您对 Count 个用户使用 Session_StartSession_End 吗?
  • @Aristos 你不为 Count 个用户使用 Session_StartSession_End 吗? WebFarm 哪个最好的解决方案?样品?

标签: asp.net vb.net iis asp.net-2.0


【解决方案1】:

经典 ASP 页面不由 ASP.Net 引擎处理。这意味着永远不会为 .asp url 触发 Global.asax 事件是正确的。

【讨论】:

    猜你喜欢
    • 2010-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多