我正在网络配置中设置 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/