【问题标题】:ASP.NET_Sessionid is getting renewedASP.NET_Sessionid 正在更新
【发布时间】:2017-01-27 21:16:24
【问题描述】:

我的网站中有一个按钮,您必须先登录。单击时,它会从 ssrs 报告服务器检索报告并将其显示在同一页面上。 我记下了它在请求 cookie 中使用的会话 ID。

现在,当我清除缓存并再次运行报告时,它会收到以下错误“ASP.NET 会话已过期”,但它会收到带有会话 ID 的响应 cookie。

现在问题来了,当我再次单击该按钮时。该站点能够从 ssrs 报告服务器检索报告,但它使用响应 cookie 的会话 ID。

有人知道为什么会发生这种行为吗?其他帖子没有给我详细的解释。

【问题讨论】:

    标签: asp.net session


    【解决方案1】:

    你的描述听起来很正常。

    会话 ID 本质上是一个指向虚拟内存空间的指针,其中包含该用户可访问的变量表。该表不会永远保留——如果 ASP.NET 框架在一定时间内(比如 20 或 30 分钟,取决于配置)没有看到会话 ID,则内存空间将被释放并回收以供其他用途.如果该会话 ID 稍后出现,它将不知道如何处理它,并会给您一个“会话已过期”错误。

    您看到的第一个会话 ID 可能是上一个会话遗留下来的。它很旧,而且它的内存空间已经没有了,所以 ASP.NET 给你这个错误。

    为所有没有有效会话的请求自动发出第二个会话 ID。 ASP.NET 将自动创建一个内存空间和一个随机密钥,并将其发送回您看到的响应 cookie。现在您的浏览器有一个最新的会话 cookie,请求可以正常工作,正如您在第二次单击该按钮时所看到的那样。

    【讨论】:

      猜你喜欢
      • 2012-05-13
      • 2020-04-25
      • 1970-01-01
      • 2022-10-12
      • 1970-01-01
      • 2019-12-19
      • 1970-01-01
      • 2018-12-25
      • 2017-11-11
      相关资源
      最近更新 更多