我似乎可以随时阅读SessionID
,即使目前还没有Cookie!
Dim SessionID As String = Request.Cookies("ASP.NET_SessionId").Value
此代码将始终返回一个值,可能是 IIS 服务器端所持有的ID。
只有在存储会话信息的请求发生时才会生成cookie。
为什么会这样?
和......
如果我正在使用会话状态服务器,SessionID
是否会与cookie SessionID
不同,如果其中一个ID丢失或重置,哪个优先?
修改
如果重置了app_pool。必须创建新的会话ID才会导致会话cookie更新吗?因为这可能会为已登录的用户带来潜在的冲突。
答案 0 :(得分:0)
每次用户访问网站并打开会话时,ASP.Net默认会创建一个SessionID,除非您指定了cookieless选项:
如果您使用会话状态服务器,则所有Web服务器上的SessionID应该相同,否则您将无法找到相同的用户。
如果ID丢失或重置,状态服务器将只创建一个新的,并使用新的SessionID编写一个新的cookie,旧的将在到期时间后删除。
答案 1 :(得分:0)
当用户访问由 ASP.NET 提供支持的网站时,IIS会生成SessionID
以唯一地识别用户会话。
如果网站使用cookies:
<sessionState mode="StateServer" cookieless="UseCookies"/>
仅当网页发出存储会话信息的请求时,才会生成名为ASP.NET_SessionId
的cookie。如果没有存储会话信息,则不会创建cookie,但用户仍将拥有活动SessionID
。
如果没有Cookie,则会从 IIS 中读取SessionID
。
服务器上的SessionID
始终优先,并且当在cookie中存储信息的新请求时将更新会话cookie。