Gre*_*reg 14 cookies ajax asp.net-mvc session
我们有一个ASP.Net应用程序,该会话(和cookie)的滑动期限为20分钟.但是,我们有一些AJAX正在轮询服务器以获取新信息.当然,这种情况的缺点是会话将无限期地继续,因为轮询呼叫会保持活动,从而导致到期时间被刷新.有没有办法防止这种情况 - 即只允许在非ajax调用上刷新会话?
关闭滑动到期并不是一个真正的选择,因为这是一个应用程序,业务用户将在电话呼叫之间的大部分时间使用.
关于这个的其他Stackoverflow讨论讨论了如何维护2个单独的应用程序(一个用于经过身份验证的调用,一个用于未经身份验证的调用.我不确定这是一个选项,因为所有调用都需要进行身份验证.
有任何想法吗?
Pat*_*ick -1
我通过在 i-Frame 中创建隐藏页面来完成此操作。然后使用 JavaScript 每 18 分钟发回一次以保持会话处于活动状态。这确实有效。
此示例来自 ASP.NET Forms 项目,但可以针对 MVC 进行调整。
创建一个名为KeepSessionAlive页面并添加元刷新标签
元 id="MetaRefresh" http-equiv="刷新" content="21600;url=KeepSessionAlive.aspx"
在后面的代码中
受保护的字符串WindowStatusText =“”;protected void Page_Load(object sender, EventArgs e)
{
//string RefreshValue = Convert.ToString((Session.Timeout * 60) - 60);
string RefreshValue = Convert.ToString((Session.Timeout * 60) - 90);
// Refresh this page 60 seconds before session timeout, effectively resetting the session timeout counter.
MetaRefresh.Attributes["content"] = RefreshValue + ";url=KeepSessionAlive.aspx?q=" + DateTime.Now.Ticks;
WindowStatusText = "Last refresh " + DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString();
}
Run Code Online (Sandbox Code Playgroud)
在母版页中添加隐藏的 iFrame
iframe ID =“KeepAliveFrame”src =“KeepSessionAlive.aspx”frameBorder =“0”宽度=“0”高度=“0”
归档时间: |
|
查看次数: |
1276 次 |
最近记录: |