session - 该 session 如何在asp.net中工作?

标签 session asp.net-3.5

请有人建议我该 session 在asp.net中实际上是如何工作的吗?
我在 session 的一部分中感到困惑,并且想简短地了解一下,所以请指导我

最佳答案

ASP.NET使用cookie来跟踪用户。当您第一次尝试向 session 中写入内容时,会将cookie发送给客户端,例如ASP.NET_SessionId。该cookie由客户端根据后续请求发送。借助此cookie,服务器可以识别客户端并写入/读取关联的 session 数据。重要的是要注意,此cookie不是持久性的(浏览器重启后将无法生存),并带有HttpOnly标志发出,这意味着客户端脚本无法访问它。

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

因此, session 背后的基本思想是,实际数据存储在服务器上的某个位置,并且客户端在每个请求上发送一些ID,以便服务器可以知道在何处查找其数据。

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

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

  • 这是MSDN上的一篇很好的文章,探讨了ASP.NET Session State

    关于session - 该 session 如何在asp.net中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7298974/

    相关文章:

    c# - 缓存 asp.net 网页的问题

    c# - 重用对象无法正常工作

    mysql - 我想在我的 Springboot 项目中实现 session (HTTP 请求)概念,但它给出了这个错误

    c# - 获取行 ID 然后将其存储在 session 中?

    php - 加上session_start();可以吗?到我整个网站的顶部?

    java - session 属性是 Web 应用程序的本地属性吗?

    python - webpy 中的 session - 获取所有类中的用户名

    .net - Databound后如何更改Gridview的标题文本?

    c# - 如何在没有程序集版本号的情况下指定 wcf BehaviourExtension 类类型?

    c# - DLL 比较以确认是否使用相同的源代码