这是一个月前提出的面试问题......
会话是否使用Cookie?如果是这样,他们是如何做到的?
假设Session["UserId"]=1
此会话变量如何在内部使用Cookie?如果是这样,cookie的名称是什么,该cookie的价值是什么......
答案 0 :(得分:11)
虽然其自身的数据存储在服务器上(或者如果以这种方式配置,但在SQL中),需要有一种方法将会话数据与特定用户相关联。
默认情况下,这是通过cookie完成的,但您可以配置cookieless,在这种情况下,唯一ID存储在URL中。
来自Microsoft:
ASP通过在会话开始时为客户端提供分配给用户的唯一密钥来维护会话状态。此密钥存储在客户端在每个请求上发送到服务器的HTTP cookie中。然后,服务器可以从cookie中读取密钥并重新膨胀服务器会话状态。
答案 1 :(得分:2)
是的,默认情况下 ASP.NET 会话使用 cookie。正如您所说,这是一个经常出现的 ASP.NET 面试问题,您可以check this video 如何回答同样的问题,并且还有其他围绕该主题提出的交叉问题。 但现在是长答案。
所以它的工作方式。首先要注意的是实际数据存储在会话中。客户端有存储 sessionid 的 cookie。Sessionid 就像一个 ID,要为这个客户端附加什么,会话中存储的相应数据是什么。
当客户端进行调用时,他发送 cookie (sessionid) 并使用该 sessionid ,状态从会话变量中恢复。
答案 2 :(得分:1)
每个会话都有SessionID。会话ID是一个唯一的号码,服务器在访问(会话)期间分配给特定用户。并且默认情况下,会话ID附加到cookie,并且该cookie将在其请求/响应期间从客户端到服务器(以及服务器到客户端)共享。服务器将根据从cookie检索的会话ID识别会话。
关于cookieless,如果您的浏览器不支持cookie或禁用cookie,则将使用cookieless。由于它是Cookieless,因此asp.net无法创建cookie来保存会话ID。相反,会话ID将在查询字符串...
中传递答案 3 :(得分:0)
是的,会话管理是使用一种会话 ID,即 cookie 来完成的。浏览器中维护的 cookie 有助于后端识别用户。
如果您从同一台机器的两个浏览器访问一个应用程序,那么将维护两个 cookie,其中每个浏览器都是 Asp.Net 后端应用程序的单独用户
答案 4 :(得分:-8)
不,存储在tmp文件夹中某处的服务器上。 会话是服务器端,cookie是客户端。