【问题标题】:How "Session_Start" in Global.Asax works ?. MVCGlobal.Asax 中的“Session_Start”如何工作? MVC
【发布时间】:2014-10-16 05:49:19
【问题描述】:

我正在尝试了解 Global.Asax 中的“Session_Start”是如何工作的。假设我的网站上有几页。例如:我在“页面 A”上输入,然后函数“Session_Start”正在触发。然后我要去“Page B”,然后呢?函数是否会再次触发?我正在尝试编写代码来检查cookie“用户”是否存在,如果存在,代码将返回 Session[“userName”] 变量,但我不确定“Session_Start”是否适合这个..

【问题讨论】:

    标签: asp.net-mvc session-variables global-asax


    【解决方案1】:

    如果您想让会话不受限制,您可以使用 cookie。 我认为您正在使用它,您在原始查询中提到了这一点。

    Session_End 在用户注销、关闭浏览器以结束会话或会话超时时触发。

    您可以将 cookie 保存在用户的浏览器中。并检查 Session_Start 中的 cookie 是否有有效值。并为用户恢复会话。

    您还可以从服务器配置中增加会话超时。

    【讨论】:

    • 非常感谢。我试图避免有人登录,然后离开计算机 25 分钟,回来,他将不得不再次登录的情况,因为 Session["userName"} expired:/.这就是为什么我一开始就询问这个“Session_Start”功能的原因。可能我错了,但我认为避免这种情况的最简单方法是放在全局 asax 文件代码中的某个位置,该代码将检查 cookie 是否存在并随时在所有页面上返回新会话。
    【解决方案2】:

    不,它不会再次触发,对于第二页。 Session_Start 在用户会话第一次启动时触发

    您可以使用它来检查用户 cookie 并将结果保存到会话变量以在更多页面中访问。

    【讨论】:

    • 谢谢您的回答!。不止一个问题:会话变量已过期。是否可以选择将此会话的过期时间设置为“无限”或类似的东西?如果有人会关闭浏览器,如何删除这个单一的会话?我可以在“Session_End”中这样做吗?
    猜你喜欢
    • 2016-05-16
    • 2012-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-24
    相关资源
    最近更新 更多