会话如何在asp.net中运行?

时间:2011-09-04 11:44:22

标签: session asp.net-3.5

请有人建议我在asp.net中如何实际工作吗? 我在会议的一部分中感到困惑,并想简要了解它,所以请指导我

2 个答案:

答案 0 :(得分:49)

ASP.NET使用cookie来跟踪用户。当您第一次尝试向会话写入内容时,会向客户端发送cookie,例如ASP.NET_SessionId。此cookie由客户端在后续请求中发送。由于这个cookie,服务器能够识别客户端并写入/读取相关的会话数据。重要的是要注意,这个cookie不是持久的(不会在浏览器重启后继续存在)并且使用HttpOnly标志发出,这意味着客户端脚本无法访问它。

除了cookie之外,您还可以将ASP.NET配置为使用隐藏字段,或者在每个请求中将会话ID附加到查询字符串。

因此会话背后的基本思想是实际数据存储在服务器上的某个位置,客户端在每个请求上发送一些ID,以便服务器知道在哪里找到它的数据。

默认情况下,有3个地方可以存储实际的会话数据:

  • In-Proc:会话存储在应用程序的内存中(最快,但如果服务器场中有多台服务器则无法运行)
  • Out-of-Proc:数据存储在安装了State服务的单独服务器中(数据存储在单独计算机的内存中,这意味着多个Web服务器可以在Web场中运行)
  • SqlServer:数据存储在SQL Server中(它是最慢但最可靠的,因为会话数据存储在SQL Server数据库中,如果会话服务器崩溃而不是Out-Of-Proc的情况,则可以提供服务)
  • 自定义实现:由于ASP.NET的可扩展性,您可以编写自己的会话提供程序并将数据存储在任何您喜欢的位置。

这是一篇关于MSDN的好文章,它探讨了ASP.NET Session State

答案 1 :(得分:4)

会话:[存储在服务器端]

1.如果您创建会话,则服务器会存储您的会话数据并创建一个SessionID。 [会话数据与SessionID存储在服务器的状态提供程序中]

2.然后服务器将SessionID返回给客户端的浏览器。

3.然后,您可以将返回的SessionID存储在Cookie中。

4.Upcoming随SessionID附加的后续请求可以访问服务器数据。

注意:仅针对当前浏览器会话和特定于用户的会话。