【问题标题】:set session timeout after inactivity在不活动后设置会话超时
【发布时间】:2012-03-12 23:30:15
【问题描述】:

我想在没有活动时重定向回主页。 但是,我没有用户登录或需要一个。但是,我希望能够在没有活动时重定向回主页。

我在 web.conf 中设置了这个

<system.web>
<sessionState mode="InProc"  timeout="2">

然后,我在主页中设置了这个

Session["UserId"] = 1;

我也试过了,但这个功能甚至没有触发。

protected void Page_Init(object sender, EventArgs e)
    {
        CheckSession();
    }


    private void CheckSession()
    {
        if (Session["UserId"] == null)
        {
            Response.Redirect("KioskHome.aspx");
        }
    }

我可以使用 global.asax 文件吗?

void Session_Start(object sender, EventArgs e)
    {
        // Code that runs when a new session is started

    }

    void Session_End(object sender, EventArgs e)
    {


    }

什么是简单的解决方案?谢谢

【问题讨论】:

  • 这应该回答你的问题stackoverflow.com/a/6210463/590177
  • 那不是我的帖子,该解决方案对我没有帮助。那为什么要关闭我的帖子?
  • 如果您想检查会话超时然后重定向,那么提供的代码将为您工作。这两个问题都与超时重定向有关,这就是我提供近距离投票的原因。或许可以解释一下为什么该解决方案没有帮助?
  • 我尝试了两种解决方案,但它什么也没做。
  • 您需要等待超时时间过去,然后尝试浏览其他地方,此时重定向代码将运行。

标签: c# asp.net


【解决方案1】:

如果我理解您的问题,如果用户在一段时间内没有执行任何操作,您希望重定向用户的浏览器。

在这种情况下 - 服务器端行为对您没有帮助。连接已经关闭。 global.asax Session_end 将在会话结束时触发,此时不会有客户端连接。 也许您应该阅读更多关于ASP.NET Page Lifecycle 的信息。

但是,您可能想要的是某种形式的客户端行为,例如 Javascript,它在特定超时后可以重定向用户。 请注意,这存在许多问题,包括用户可能使用多个选项卡,因此很难准确了解会话何时超时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多