会话变量何时消失?

时间:2018-07-03 14:04:23

标签: c# asp.net-mvc session session-variables httpcontext

我有一个单页的.NET 4.7.1 MVC应用程序。我对Default.aspx.cs的Page_Load()设置了会话变量,当我击中Page_Load()最后一行的断点时,会话对象将被正确存储。但是,当我单击链接并在Page_Load()的第一行上遇到断点以进行第二次调用时,HttpContext.Current.Session没有设置会话变量。同样,HttpContext.Current.Session.SessionID在第一次调用后会更改,然后保持不变。后续调用可以正常工作,但是应用程序池回收后的第一个调用始终为空。

我在web.config中没有httpCookies条目,并且我始终通过HTTPS访问。该应用程序在azure应用程序服务中运行,我正在使用OpenID Connect进行身份验证。在什么情况下会在超时之前从HttpContext.Current.Session中删除变量?

更新:我添加了一些诊断日志记录,有时进行了SessionID更改,但没有删除实际的会话数据。我不知道这怎么可能,但以为我会记录下来。此外,似乎我的会话ID日志记录已解决了该问题。我看到其他人提到,在访问该会话之前(该会话正在发生)不会保留该会话,但是(没有进行详尽的搜索)我怀疑第一次调用中的所有会话读写都是在其他程序集中进行的,因此也许不是被“算作”保留会议的理由?这似乎很客气,但这是我目前唯一的猜测。我仍然很困惑为什么它现在会开始破裂。

0 个答案:

没有答案