Session 会话在asp.net中如何工作?

Session 会话在asp.net中如何工作?,session,asp.net-3.5,Session,Asp.net 3.5,请任何人告诉我会话在asp.net中是如何工作的? 我在部分课程中感到困惑,想简要了解一下,请指导我。ASP.NET使用cookie跟踪用户。当您第一次尝试向会话写入cookie发送到客户端时,类似于ASP.NET\u SessionId。此cookie由客户端在后续请求时发送。由于这个cookie,服务器能够识别客户机并写入/读取相关的会话数据。需要注意的是,此cookie不是持久性的(无法在浏览器重新启动后继续),并且发出的标志表示客户端脚本无法访问它 除了cookie之外,您还可以配置AS

请任何人告诉我会话在asp.net中是如何工作的?
我在部分课程中感到困惑,想简要了解一下,请指导我。ASP.NET使用cookie跟踪用户。当您第一次尝试向会话写入cookie发送到客户端时,类似于
ASP.NET\u SessionId
。此cookie由客户端在后续请求时发送。由于这个cookie,服务器能够识别客户机并写入/读取相关的会话数据。需要注意的是,此cookie不是持久性的(无法在浏览器重新启动后继续),并且发出的标志表示客户端脚本无法访问它

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

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

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

  • In-Proc:会话存储在应用程序的内存中(最快,但如果一个服务器场中有多个服务器,这将不起作用)
  • 进程外:数据存储在安装了状态服务的单独服务器中(数据存储在单独机器的内存中,这意味着多个web服务器可以在一个web场中工作)
  • SqlServer:数据存储在SQL Server中(这是最慢但最可靠的,因为会话数据存储在SQL Server数据库中,如果会话服务器崩溃,则可以使用它,而非进程外)
  • 自定义实现:由于ASP.NET的可扩展性,您可以编写自己的会话提供程序并将数据存储到任何您喜欢的地方

这里有一篇关于MSDN的好文章,探讨了。

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

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

2.然后服务器将会话ID返回到客户端的浏览器

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

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


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

尝试阅读此CodeProject文章我有一个疑问,比方说,我刚刚在asp.net Mvc应用程序中创建了一个
关于
的页面,该页面只返回一个
视图
,这将为用户的请求创建一个新会话,还是使用应用程序中的代码(如表单身份验证)创建会话?