Asp.net 会话在逻辑上和物理上是什么?

Asp.net 会话在逻辑上和物理上是什么?,asp.net,session,iis,Asp.net,Session,Iis,这是关于一些概念的一个相当基本的问题 在Web服务器(如IIS或Apache)的上下文中,会话的定义是什么。什么是物理和逻辑上的会话 如何确定会话是开始的还是结束的?使用服务器端的计时器或其他什么?在web术语中,会话是用户对网站的访问,在用户浏览网站时,可能包含多个页面视图和交互。用户所做的选择和任何输入的数据都可以在会话期间保存,并在会话期间重新显示或用于相应地定制用户体验。关键是会话代表用户和站点之间的一组交互,而不是一个简单的静态页面运行。会议预计只会持续很短的时间;如果用户停止向站点发

这是关于一些概念的一个相当基本的问题

在Web服务器(如IIS或Apache)的上下文中,会话的定义是什么。什么是物理和逻辑上的会话


如何确定会话是开始的还是结束的?使用服务器端的计时器或其他什么?

在web术语中,会话是用户对网站的访问,在用户浏览网站时,可能包含多个页面视图和交互。用户所做的选择和任何输入的数据都可以在会话期间保存,并在会话期间重新显示或用于相应地定制用户体验。关键是会话代表用户和站点之间的一组交互,而不是一个简单的静态页面运行。会议预计只会持续很短的时间;如果用户停止向站点发出请求,几分钟后会话将被视为结束

HTTP是无状态的,所以就浏览器和web服务器之间的关系而言,会话不作为物理实体存在

从逻辑上讲,ASP.NET通过识别用户对站点的重复调用并在调用之间保留会话状态信息来模拟会话

它通过在用户第一次调用站点时为cookie中的每个用户分配一个唯一的令牌(“会话ID”)来实现这一点。用户随后每次调用站点时,都会显示cookie。ASP.NET可以识别该令牌并从持久性介质中调用该令牌的任何持久化会话数据(ASP.NET将其存储在服务器端的内存、状态服务器或SQL数据库中)。应用程序可以在HTTP请求的生命周期内读取和修改会话数据,通常是响应用户的操作。在请求结束时,会话数据将返回到持久性介质

通过这种方式,一个开放的、连续的会话的幻觉得以保留。会话的开始很容易判断——这是第一次向用户提供令牌,以及存储在持久性介质中带有时间戳的会话记录。关于会话何时结束,没有简单的答案,因为HTTP自然是无状态的。因此,我们必须假设,当给定的时间已经过去而用户没有返回站点时,会话应该关闭。这只能通过cookie过期或通过使用我们选择的任意超时,通过与会话数据上的时间戳进行比较,从持久性介质中删除会话记录来实现。ASP.NET中的默认值为20分钟

有趣的一点是,当使用SQLServer作为ASP.NET的会话持久性介质时,它使用一个调度的SQLServer代理任务来清除过期的会话。但是,如果代理未运行或不受支持(例如,在SQL Server Express edition的情况下),则不会清除过期的会话,因此只要用户继续提供相同的会话令牌,会话就不会结束。在实践中,会话将在用户关闭浏览器时结束,因为cookie将被自动丢弃


然而,为了回答您的特定问题,请注意,我一直在谈论应用程序服务器(ASP.NET)上下文中的会话。web服务器(IIS)根本没有会话的概念-它所扮演的唯一角色是在将请求传递给ASP.NET时提供和读取cookie。

在web术语中,会话是用户访问网站的过程,在用户浏览网站时,它可能包含多个页面视图和交互。用户所做的选择和任何输入的数据都可以在会话期间保存,并在会话期间重新显示或用于相应地定制用户体验。关键是会话代表用户和站点之间的一组交互,而不是一个简单的静态页面运行。会议预计只会持续很短的时间;如果用户停止向站点发出请求,几分钟后会话将被视为结束

HTTP是无状态的,所以就浏览器和web服务器之间的关系而言,会话不作为物理实体存在

从逻辑上讲,ASP.NET通过识别用户对站点的重复调用并在调用之间保留会话状态信息来模拟会话

它通过在用户第一次调用站点时为cookie中的每个用户分配一个唯一的令牌(“会话ID”)来实现这一点。用户随后每次调用站点时,都会显示cookie。ASP.NET可以识别该令牌并从持久性介质中调用该令牌的任何持久化会话数据(ASP.NET将其存储在服务器端的内存、状态服务器或SQL数据库中)。应用程序可以在HTTP请求的生命周期内读取和修改会话数据,通常是响应用户的操作。在请求结束时,会话数据将返回到持久性介质

通过这种方式,一个开放的、连续的会话的幻觉得以保留。会话的开始很容易判断——这是第一次向用户提供令牌,以及存储在持久性介质中带有时间戳的会话记录。关于会话何时结束,没有简单的答案,因为HTTP自然是无状态的。因此,我们必须假设,当给定的时间已经过去而用户没有返回站点时,会话应该关闭。这只能通过cookie过期或通过使用我们选择的任意超时,通过与会话数据上的时间戳进行比较,从持久性介质中删除会话记录来实现。ASP.NET中的默认值为20分钟

有趣的一点是,当使用SQLServer作为ASP.NET的会话持久性介质时,它使用一个调度的SQLServer代理任务来清除过期的会话。然而,如果Ag