【问题标题】:How to log exact session out datetime in vb.net如何在 vb.net 中记录确切的会话日期时间
【发布时间】:2015-09-02 13:49:51
【问题描述】:
要在用户下次登录时显示用户会话的持续时间,立即登录后将会话开始时间保存到数据库中。这里将SessionId 设置为插入条目的会话变量。会话中的这个SessionId 在注销/会话退出时应该是活动的。
点击注销按钮后,我可以针对会话变量更新相同的会话条目。但是如果会话根据web.config Timeout 自动超时怎么办。
我尝试在Session_End 事件中更新Global.asax 中的相同条目。但从未触发过会话。(不知道为什么)。但是有没有办法在 .NET 中计算用户会话时间跨度?
【问题讨论】:
标签:
c#
asp.net
vb.net
session
【解决方案1】:
最后,在每次加载母版页面时,我添加了以下脚本,该脚本调用 Service 方法来更新会话信息。
<script language="javascript" type="text/javascript">
var sessionTimeout = '<%= Session.TimeOut %>'; //Web.config timeout
var sessionTimeoutWarning = parseInt(sessionTimeout) - 1; //Trigger time before 1 min of expire
var sTimeout = parseInt(sessionTimeoutWarning) * 60 * 1000;
var sessionId = '<%= session("SessionId") %>'; //This is kept in session when user logged in and entry created in database.
setTimeout(function() {
if (sessionId > 0) {
ClientService.UpdateClientSessionInformation(sessionId); //This is the client service method to update against session Id. Rest of time out and time span is manged in Stored procedure.
}
}, sTimeout);
</script>