c# - 在 session 过期之前提醒用户,可以选择续订 session

标签 c# javascript asp.net

我正在网络配置中设置 session 时间。我还有一个 JavaScript 用于检测 session 超时并让用户知道。

我希望能够在 session 超时前 30 秒或一分钟或更长时间通过弹出窗口提醒用户,并让他们有机会延长或取消并让它超时。这可以做到吗?我尝试过使用互联网上的各种方法,但似乎都不起作用。它们都要求我下载一些东西,但我不想这样做。

<script type="text/javascript">
    var sessionTimeout = "<%= Session.Timeout %>";

    function DisplaySessionTimeout() {
        sessionTimeout = sessionTimeout - 1;

        if (sessionTimeout >= 0)
            window.setTimeout("DisplaySessionTimeout()", 60000);
        else
            alert("Your current Session is over due to inactivity.");
    }
</script>

我还在检查后面代码中的超时并重新定向,但考虑只在 javascript 中执行此操作。

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


private void CheckSession()
{
    if (Session["ASP.NET_SessionId"] == null)
    {
       // Session.RemoveAll();
       Response.Redirect("Home.aspx");
    }
}

最佳答案

您必须在 session 时间限制的同时设置一个计时器;客户端无法准确知道 session 到期前的时间。这就是我在应用程序中所做的。

我们执行 JQuery $.get("keepalive.aspx") 向 ASP.NET 页面发出请求,该页面访问 session 并刷新它,从而保持当前 session 处于事件状态。然后您还可以重置客户端计时器。这对我们来说效果很好。

参见this post了解更多信息。

关于c# - 在 session 过期之前提醒用户,可以选择续订 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9753351/

相关文章:

c# - C# 中泛型方法的 Nullable<T>?

c# - 如何使用 QBFC13 和 C# 获取一个月的所有发票并将其全部保存为 PDF?

javascript - 如何在加载特定 JS 后运行 Javascript 函数?

c# - Access-Control-Allow-Origin header 具有多个值,或者Preflight jquery ajax到Web Api 2

c# - ASP.NET - Window.Open(URL) - 文件被缓存,如何停止?

c# - 不在某些控件上使用 setter 属性

c# - 如何从只读结构中获取 ReadOnlySpan<byte> ?

javascript - 在 TypeScript 中使用解构和剩余类型的函数参数

javascript - 在外部按钮上触发一个 div/<a> 点击光滑的 slider

c# - 在表中插入值的 asp.net 查询