C# ASP.NET:为什么即使不存在cookie,我也可以读取会话cookie?
似乎我可以随时读取C# ASP.NET:为什么即使不存在cookie,我也可以读取会话cookie?,c#,asp.net,vb.net,session,cookies,C#,Asp.net,Vb.net,Session,Cookies,似乎我可以随时读取SessionID,即使当前不存在cookie Dim SessionID As String = Request.Cookies("ASP.NET_SessionId").Value 此代码将始终返回一个值,可能是IIS服务器端持有的ID 只有在请求存储会话信息时才会生成cookie 这是为什么? 而且 如果我使用的是会话状态服务器,SessionID是否会与cookieSessionID不同?如果其中一个ID丢失或重置,哪个会优先 编辑 如果应用程序池已重置。必须创建新的
SessionID
,即使当前不存在cookie
Dim SessionID As String = Request.Cookies("ASP.NET_SessionId").Value
此代码将始终返回一个值,可能是IIS服务器端持有的ID
只有在请求存储会话信息时才会生成cookie
这是为什么?
而且
如果我使用的是会话状态服务器,SessionID
是否会与cookieSessionID
不同?如果其中一个ID丢失或重置,哪个会优先
编辑
如果应用程序池已重置。必须创建新的会话ID,这会导致会话cookie也被更新吗?因为这可能会为已登录的用户创建潜在冲突。每次用户访问网站并打开会话时,ASP.Net默认情况下都会创建会话ID,除非您指定了无cookieless选项: 如果您使用的是会话状态服务器,那么所有web服务器上的SessionID都应该相同,否则您将无法找到相同的用户
如果ID丢失或重置,状态服务器只需创建一个新的,并使用新的会话ID写入一个新的cookie,过期后旧的cookie将被删除。每次用户访问网站并打开会话时,默认情况下ASP.Net都会创建一个会话ID,除非您指定了无cookie选项: 如果您使用的是会话状态服务器,那么所有web服务器上的SessionID都应该相同,否则您将无法找到相同的用户
如果ID丢失或重置,状态服务器只需创建一个新的ID,并使用新的会话ID编写一个新的cookie,过期后旧的cookie将被删除。当用户访问由ASP.NET支持的网站时,IIS会生成一个
会话ID
以唯一地标识用户会话
如果网站正在使用cookie:
<sessionState mode="StateServer" cookieless="UseCookies"/>
只有当网页请求存储会话信息时,才会生成名为ASP.NET_SessionId
的cookie。如果未存储会话信息,则不会创建cookie,但用户仍将拥有活动的会话ID
当不存在cookie时,SessionID
从IIS读取
服务器上的
SessionID
始终优先,并在发出在cookie中存储信息的新请求时更新会话cookie。当用户访问由ASP.NET支持的网站时,IIS生成一个SessionID
以唯一地标识用户会话
如果网站正在使用cookie:
<sessionState mode="StateServer" cookieless="UseCookies"/>
只有当网页请求存储会话信息时,才会生成名为ASP.NET_SessionId
的cookie。如果未存储会话信息,则不会创建cookie,但用户仍将拥有活动的会话ID
当不存在cookie时,SessionID
从IIS读取
服务器上的
SessionID
始终优先,并在发出在cookie中存储信息的新请求时更新会话cookie。当会话cookie丢失(删除、过期)时,asp.net将生成另一个会话cookie来保存SessionID,以便您始终以一致的方式引用会话(“某物”)并获取预期的行为。当会话cookie丢失(删除、过期)时,asp.net将生成另一个cookie来保存sessionId,以便您始终以一致的方式引用会话(“某物”)并获得预期的行为。这并不完全正确。您可以自己测试它。当用户访问网站时会生成会话ID
,但在发出存储会话信息的请求之前不会生成cookie。如果未存储任何会话信息,则不会创建cookie,但用户仍将拥有该cookie活动会话ID。这并不完全正确。您可以自己测试它。当用户访问网站时会生成sessionid
,但在发出存储会话信息的请求之前不会生成cookie。如果未存储会话信息,则不会创建cookie,但用户仍将拥有活动会话会话ID。