2010-09-17 76 views
2

我有一个.net 3.5网站,它使用Windows身份验证,并在我的基础主页类的预渲染中使用元标记过期会话。如何防止会话在使用AJAX时过期?

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分钟后,用户将被重定向到应用程序启动页面。

有没有办法在异步回发中重置或扩展元标记?或者更好的方法来完成这一切?

回答

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> 
0

在过去,我已经使用了的WebMethod(EnableSession =真)属性上,以响应AJAX方法的调用