在这里,我想知道 ASP.NET 中不同类型的 Session 而不是 Session 状态。这是采访中被问到的问题。
5 回答
会话状态模式有 5 种类型:
InProc 模式:将会话状态存储在 Web 服务器的内存中。这是默认设置。
StateServer 模式:将会话状态存储在称为 ASP.NET 状态服务的单独进程中。这可确保在重新启动 Web 应用程序时保留会话状态,并使会话状态可用于 Web 场中的多个 Web 服务器。
SQLServer模式将会话状态存储在 SQL Server 数据库中。这可确保在重新启动 Web 应用程序时保留会话状态,并使会话状态可用于 Web 场中的多个 Web 服务器。
自定义模式:允许您指定自定义存储提供程序。
关闭模式:禁用会话状态。
典型的会话基于 cookie。服务器给你一个,你在每次请求时将它发送到服务器。但是,Asp.net 也允许您使用不同类型的会话 - 无 cookie 会话。然后会话 id 被“存储”在 URL 地址中。如果使用不当,这种技术是非常危险的。
肯定需要OP的更多澄清。我觉得这些术语可以互换使用。
从本质上讲,网络是无状态的。为了克服这个问题,ASP.Net 提供了几种状态管理选项,如 viewstate、controlstate 等。Session State 是这些选项之一。
ASP.NET会话状态支持会话变量的多个存储选项。每个选项都被标识为会话状态模式类型。有四种模式类型或只是模式。进程内模式、状态服务器模式、SQL Server 模式、自定义模式和关闭模式。这些是模式。进程内模式使用内存作为会话存储。State Server 模式使用 state-server 作为会话存储. 等等。此外,当通过 web.config 指定模式时,还需要一些附加参数,如连接字符串、超时等。其中一个参数是“cookieless”,默认值为“AutoDetect”。如果指定为“true”,它将在 url 中嵌入 ID。(正如@naivists 所解释的那样)。无 Cookie 选项可用于任何模式。
这就是 ASP.Net Session 的全部内容。我觉得在可互换使用的术语状态、模式、模式类型、存储等方面存在一些混淆。除此之外,不应该有其他单独的东西作为“会话类型”。
会话有3种,列举如下
进程中。
外包。
Sql 服务器会话。
它们存储在哪里。
inproc - 默认存储在 web.config 中。
outproc - 存储在服务器端。
Sql server - 存储在数据库中。
您在 asp.net 中有以下类型的会话管理,您可以在 web.config 文件中定义它们
会话模式=“inproc”...表示会话将存储在您的应用程序会话模式=“outproc”内的网络服务器上...表示会话将存储在您的应用程序会话模式=“状态服务器”之外的服务器上。 .表示会话将存储在数据库中的临时内存中会话模式=“sqlserver”...表示会话将永久存储在数据库中。
asp.net 中的三种类型的会话。
- 进程内会话
- 出进程会话
- SQL-服务器会话