ASP.Net会话与Cache-Control不一致

时间:2016-02-28 05:20:04

标签: c# asp.net .net session cache-control

ASP.Net会话状态面临一个奇怪的问题。我们有一个用于浏览用户帐户的遗留应用程序,该帐户使用会话状态来存储某些对象,例如当前打开的帐号。

最近一次更改后,我们在Cache-Control添加了no-cache, no-store, must-revalidate标头,我们随机开始从会话状态中丢失帐号。奇怪的是,当由于访问应该存在的会话对象(来自Page_PreRender)而抛出NullReference异常时,以及当此异常传播到我们重定向到的Application_Error时自定义错误页面,完全相同的会话对象现在神奇地拥有帐号(我们将其打印在堆栈跟踪上方)。

以下是Application_Error中我的global.asax的样子:

Session["ServerLastError"] = (System.Exception)Server.GetLastError();
Server.Execute("~/ApplicationError.aspx");
Server.ClearError();

现在我做了一些挖掘,我在某处读到会话在Application_Error重置。然而,缺失的数据如何神秘地再次出现?我们的Cache-Control设置如何影响这个?

不幸的是,由于企业限制,我不能在这里发布大量代码,但是如果需要任何代码来识别问题,请告诉我,我会尝试分享它。

有什么想法在这里发生了什么?

0 个答案:

没有答案