如何在浏览器关闭时调用Session_End?

时间:2015-08-18 11:43:53

标签: c# asp.net-mvc

我有两个问题。我将把我的问题分成两部分并概述。我不完全确定我需要发布的代码,所以如果我错过了一些,请告诉我,我会帮助。

概述:

当浏览器关闭时,我需要签出用户。

问题1:

如何在浏览器关闭时调用Session_End?

我做了一些关于如何关闭它的阅读,似乎在浏览器结束时检测Session是否已经结束的唯一方法是在我的web配置中使用一个名为“InProc”的东西。我试了一下它似乎根本没有改变任何东西。所以我想知道是否还有另一种解决方法。

Session_End中:

 protected void Session_End() {
            if (User.Identity.IsAuthenticated) {

            }
        }

问题2:如何在Session_End上签署用户?

一旦程序调用了虚空,我需要签署用户,因为它导致程序中的错误。我正在使用Authentification经理。

Session_End中:

protected void Session_End() {
            if (User.Identity.IsAuthenticated) {
                AuthenticationManager.SignOut();
            }
        }

2 个答案:

答案 0 :(得分:2)

使用InProc会话,会话超时时调用Session_End方法。这是(默认情况下)用户上次访问您网站后 20分钟(请求新页面)。请注意,这些20分钟可能会花费大量精力阅读您网站的单个页面 - 他的会话仍然关闭。

当用户关闭浏览器或导航离开您的网站时,方式可以检测到。

答案 1 :(得分:0)

您需要使用Global.asax文件。它应该已经包含此方法,您需要做的就是添加代码的内容。

protected void Session_End(object sender, EventArgs e)
{
    if (User.Identity.IsAuthenticated)
    {
        AuthenticationManager.SignOut();
    }
}