打印剩余会话时间以在 ASP.NET 中实时查看
Posted
技术标签:
【中文标题】打印剩余会话时间以在 ASP.NET 中实时查看【英文标题】:Print the Remaining Session Time to View in Real-Time in ASP.NET 【发布时间】:2022-01-18 04:48:23 【问题描述】:登录ASP.NET MVC项目时是否可以实时显示View
中的剩余会话时间?我没有在问题中添加任何代码,因为我在研究过程中没有遇到任何解决方案。
【问题讨论】:
会话的工作方式是任何用户对服务器的操作都应该重置会话。因此,如果您有 20 分钟的会话,那么在任何 http 请求时——也就是说,任何 C# 代码都运行除了心跳/信号器的东西——剩余的会话时间是总是整整 20 分钟。所以此时你真正要做的是为你的会话超时时间编写一个javascript倒数计时器。 我可以在登录时设置一个计数器,但是如何在不同视图之间共享计数器值?此外,可以通过 web.config 文件更改会话持续时间。 如果每次操作都会重置会话时间,那么在视图之间共享将没有任何价值。 Get value from web config 【参考方案1】:我将分两步完成此操作,首先使用部分传递超时值,以便可以重复使用。例如从您的Web.Config etc
阅读并通过它。
然后在您的视图中,您可以添加此脚本并调整/修改值。
@functions
public int PopupShowDelay
get return 60000 * (Session.Timeout - 1);
<script type="text/javascript">
window.SessionTimeout = (function()
var _timeLeft, _popupTimer, _countDownTimer;
var stopTimers = function()
window.clearTimeout(_popupTimer);
window.clearTimeout(_countDownTimer);
;
var updateCountDown = function()
var min = Math.floor(_timeLeft / 60);
var sec = _timeLeft % 60;
if(sec < 10)
sec = "0" + sec;
document.getElementById("CountDownHolder").innerhtml = min + ":" + sec;
if(_timeLeft > 0)
_timeLeft--;
_countDownTimer = window.setTimeout(updateCountDown, 1000);
else
window.location = "Home/TimeOutPage";
;
var showPopup = function()
_timeLeft = 60;
updateCountDown();
ClientTimeoutPopup.Show();
;
var schedulePopup = function()
stopTimers();
_popupTimer = window.setTimeout(showPopup, @PopupShowDelay);
;
var sendKeepAlive = function()
stopTimers();
ClientTimeoutPopup.Hide();
SessionTimeout.schedulePopup();
;
return
schedulePopup: schedulePopup,
sendKeepAlive: sendKeepAlive
;
)();
</script>
@using (Html.BeginForm())
<p>
A timeout warning popup will be shown every @(Session.Timeout - 1) min.
</p>
@Html.Partial("TimeoutPartial")
【讨论】:
以上是关于打印剩余会话时间以在 ASP.NET 中实时查看的主要内容,如果未能解决你的问题,请参考以下文章