Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET:为什么即使不存在cookie,我也可以读取会话cookie?_C#_Asp.net_Vb.net_Session_Cookies - Fatal编程技术网

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
是否会与cookie
SessionID
不同?如果其中一个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。