我有一个.Net 3.5网站,它使用Windows身份验证,并使用我的基本母版类的预渲染上的元标记使会话过期。
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
if (Response.ContentType == "text/html")
this.Page.Header.Controls.Add(new LiteralControl(
String.Format("<meta http-equiv='refresh' content='{0};url={1}'>",
SessionLengthMinutes * 60, SessionExpireDestinationUrl)));
}
这适用于完全回发的网页。但是,在我的应用程序中有一些页面,用户在更新面板中执行了大量工作。我公司的政策是超时15分钟。这意味着,在更新面板页面内部工作15分钟后,用户将被重定向到应用程序启动页面。
有没有办法在异步回发上重置或扩展元标记?或者也许是完全实现这一目标的更好方法?
答案 0 :(得分:1)
完全实现这一目标的更好方法是使用javascript。如果您的页面已添加书签,这将阻止与元刷新相关的问题。
代替页面META REFRESH使用此javascript:
<script type="text/javascript">
var _timerID = setTimeout("window.location='splash-url'", 900000); //15 mins
</script>
当您从更新面板发出请求时,请使用以下javascript:
<script type="text/javascript">
clearTimeout(_timerID);
_timerID = setTimeout("window.location='splash-url'", 900000); //15 mins
</script>
答案 1 :(得分:0)
过去我在响应AJAX调用的方法上使用了WebMethod(EnableSession = true)属性
答案 2 :(得分:0)
您也可以使用AJAX请求来保持会话处于活动状态。只要用户在浏览器中打开您的页面,这将有效。 见http://808.dk/?code-ajax-session-keepalive