mvc超时Session_End

时间:2014-03-27 16:00:27

标签: c# ajax asp.net-mvc

我有一个MVC应用程序,我想在Session_End事件触发之前将用户重定向到主屏幕?

如果我允许它进入会话结束,那么它只会终止会话并且页面不再有效。

有关于此的任何想法吗?

2 个答案:

答案 0 :(得分:1)

如果您的问题背后的想法不是让会话自动终止,您可以执行以下操作

在_Layout.cshtml中,包含一个保持活动的ping脚本。我在这里用Razor语法显示 -

@{
   // Get the session timeout from configuration
   var sessionTimeout = (System.Web.Configuration.ConfigurationManager.GetSection("system.web/sessionState") as System.Web.Configuration.SessionStateSection).Timeout;
   // Ping interval can just a minute less that the session expiry
   var pingInterval = sessionTimeout.AddMinutes(-1.0);
}
<script type="text/javascript">
   window.setInterval(function () {
     $.ajax('@Url.Content("~")', { async: true, cache: false });
   }, @((int)pingInterval.TotalMilliseconds));
</script>

此脚本将在会话到期前一分钟ping您的主页,从而实时保存会话。

答案 1 :(得分:0)

使用setInterval()window.location.replace()。间隔以毫秒为单位。所以用你需要的间隔替换3000。

setInterval(function(){
    window.location.replace(http://www.google.com)
}, 3000);
在这种情况下,

setTimeout也是一个可行的选择(@Dismissle)