【问题标题】:Empty Session object remembers the sessionID?空的 Session 对象还记得 sessionID 吗?
【发布时间】:2012-04-29 17:03:47
【问题描述】:

如果其中没有存储任何值,我确定 Session id 会不断变化。

但似乎 2010 年有一个例外: here is the demo vid

新页面(空项目):

   protected void Page_Load(object sender, EventArgs e)
    {
        Response.Write(Session.SessionID);
    }

奇怪,但是在回发/刷新/ctrl+f5 之后:我得到了 same 数字......但它不应该是那样......(因为我没有存储任何东西)

我错过了什么?

附言Session.Count =0.....

编辑

我只是在 vs2005 中运行相同的代码,并且每次都有一个新的会话 ID !!!!

【问题讨论】:

  • @Aliostad 你读过我的问题信息了吗?它应该每次都改变,但它没有
  • 显示 web.config 文件,会话状态部分;
  • @Henk - 文档明确指出,当会话为空时不应重复使用会话 ID,因此 .net 4.0 中存在错误或文档中存在错误。

标签: c# asp.net session


【解决方案1】:

应该是这样的。

Session 是一个特殊的 ASP.NET 运行时对象,在确定的时间内存在于所有请求/响应中。设计上它保持不变,无论是页面加载还是回发。

会话终止,然后达到超时期限。您可以控制要使会话保持活动状态的确切超时时间:

Session timeout in ASP.NET

您还可以控制会话在请求之间保持的位置。

http://msdn.microsoft.com/en-us/library/z1hkazw7.aspx

在内存中状态管理很简单,它只是将 Session 对象保存在 RAM 中。因此,如果应用程序池被回收,所有数据都消失了。更多可用于生产的场景包括 SQL 状态管理。

编辑: 我只是假设,然后你在 VS2005 上运行,你在旧版本的 ASP.NET Web 开发服务器(Cassini)上运行,如果没有任何内容存储在 Session 中,我的工作确实是让每个新请求都有 Session。

【讨论】:

  • 如果内存服务,它通过cookies保存?还是我弄错了它的服务器端?
  • @RoyiNamir,继续打开 asp.net 书。阅读有关会话管理的信息。
  • 您只会在每次运行应用程序时获得一个新 ID,而不是在您刷新页面时。如果每次刷新页面时都得到一个新的 ID,那就有问题了。
  • @alexanderb 这与会话对象的实际情况背道而驰。如果 IIS 重新启动,则会话不能仍然存在 - 甚至应用程序也不存在。
  • @mshsayem - 我们正在使用 cookie,因为屏幕截图中的 URL 不包含会话 ID。
猜你喜欢
  • 1970-01-01
  • 2010-09-08
  • 1970-01-01
  • 2012-07-08
  • 1970-01-01
  • 1970-01-01
  • 2010-11-17
  • 2023-04-05
  • 1970-01-01
相关资源
最近更新 更多