【发布时间】:2011-02-12 15:15:50
【问题描述】:
我正在开发一个由 .NET asp/C# 代码驱动的网站。客户端要求会话有 25 分钟的超时。但是,有时会使用该站点,并且用户会长时间保持连接(超过 25 分钟)。 Session_End 被触发:
protected void Session_End(Object sender, EventArgs e)
{
Hashtable trackingInformaiton = (Hashtable)Application["trackingInformation"];
trackingInformaiton.Remove(Session["trackingID"]);
}
用户稍后返回,但当他们与网站交互时,他们收到错误,我们收到此电子邮件通知:
用户:未经身份验证的用户
错误:System.Web.HttpException
描述:加载视图状态失败。正在加载视图状态的控件树必须与之前请求期间用于保存视图状态的控件树匹配...
堆栈跟踪的重要部分是System.Web.UI.Control.AddedControl。显然,服务器已经丢弃了会话数据,并且正在发送新数据,但客户端正在尝试处理旧数据。因此"the control tree into which viewstate is being loaded [doesn't] match the control tree that was used to save the viewstate during the prevoius request."
问题来了。当连接超时时,如何force 指示用户的浏览器重定向到“您已注销”屏幕? (这是我应该添加到 Session_End 方法的东西吗?)
【问题讨论】:
标签: c# asp.net exception-handling session-timeout logout