我正在开发一个由 .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."
那么问题来了。当连接超时时,如何强制指示用户的浏览器重定向到“您已注销”屏幕?(我应该添加到 Session_End 方法中吗?)