基本:如何创建会话ID?

时间:2008-12-12 19:55:10

标签: asp.net session

IIS是否在收到请求时创建会话ID以及保存的位置(客户端或服务器)?

服务器如何识别请求来自同一个用户/会话?

2 个答案:

答案 0 :(得分:6)

第一个问题的答案是肯定的 - 如果使用了会话,那么两者都是。

Cookie是客户端和服务器之间在每个请求/响应之间来回传递的一小段文本。

IIS生成会话ID,保存会话ID和任何相关数据,并将cookie传递给客户端(浏览器)。

当客户端发出另一个请求时,它会将包含sessionID的cookie发送回服务器。然后,服务器可以查看cookie并找到保存在服务器上的会话(以及相关数据)。

答案 1 :(得分:2)

在ASP.net中,会话有多个保存位置,但它始终位于服务器基础结构中。

默认值是IIS进程的内存。这意味着:如果重置IIS(或整个PC)或甚至IIS中的应用程序池,则会删除所有会话,并且会话数据将永久丢失。此外,如果您有很多会话并在每个会话中存储大量数据,则该过程将需要大量内存,这可能是一个问题。这被称为“In-Proc”会议。

主要替代方案是SQL Server数据库。这样,即使在重新启动后,会话仍然保留,并且每个会话的大小并不重要。主要缺点是增加了延迟:从数据库中获取数据当然比In-Proc解决方案慢。

还有一些其他方法如何存储会话(包括编写一个全新的会话提供程序的选项),但两个常见的方法是“服务器的内存”和“MS SQL数据库”。