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