ASP.NET - 嵌套页面上的Javascript超时警告和重定向

时间:2014-07-16 21:29:03

标签: javascript asp.net session

我是一个ASP.NET新手,所以我提前为任何非常明显或我没有解释的事情道歉!

我希望我的应用程序在会话超时时重定向到timedout.aspx,并且还会在五分钟前显示警告。我当前(工作)的代码在this question的答案中做了类似的事情。在每个页面加载时,在代码隐藏中,我获取当前的Session.Timeout,并调用一个使用page.ClientScript.RegisterClientScriptBlock的实用程序函数,将以下JS代码添加到页面中:

function SessionTimeoutRedirect(redirectUrl) {
  window.location = redirectUrl;
};
setTimeout('SessionTimeoutRedirect('timeout.aspx'),Session.Timeout * 60000);

此JS代码存储在一个字符串中,然后嵌入到包含在网站上每个页面中的页面中。

If (Not page1.ClientScript.IsClientScriptBlockRegistered(StringConstant.SessionExpiredRedirectScriptKey)) Then
  page1.ClientScript.RegisterClientScriptBlock(GetType(System.Web.UI.Page), StringConstant.SessionExpiredRedirectScriptKey, _
    scriptStringBuilder.ToString(), True)
End If

我有类似的警告。

如果不是因为应用程序在彼此之间呈现了许多不同的页面,这样可以正常工作:例如,在第一个主页面上,MainPage.aspx,JS函数呈现

var cp = oDialog.get_contentPane();
cp.set_contentUrl('DialogPage.aspx');

所以在这种情况下,MainPage.aspx将在page_load上添加javascript代码在5分钟内超时,然后一旦呈现DialogPage.aspx,Session.Timeout重置但MainPage.aspx仍然具有旧的javascript代码超时。所以MainPage.aspx最终会提前重定向窗口。

我不知道这个解决方案会是什么样子。如果Platform.aspx(和DialogPage.aspx也可能有其他嵌套页面)必须继续轮询服务器,那将重置会话超时。每次在应用程序中加载新页面时,似乎无法在旧页面中重置或删除RegisterClientScriptBlock javascript代码。

感谢您的帮助!

0 个答案:

没有答案