【问题标题】:Dont know how to store session id in sql session state不知道如何在 sql 会话状态中存储会话 ID
【发布时间】:2010-12-31 09:50:09
【问题描述】:

我是 ASP.NET 的新手。我正在创建一个网站,我必须为每个登录该网站的用户创建会话。现在我无法想象如何在我的数据库中存储会话。

我读了几本书,并了解了如何配置会话状态。但我仍然在我开始的地方。我无法获得应该保存会话 ID 的位置。 我正在使用 sql server 会话状态。我已经创建了数据库 aspnetdb 和所有表 r 。但我不知道如何使用它们。如何将我的会话 ID 保存到数据库中。 我完全不知道如何解释我的问题。

【问题讨论】:

    标签: asp.net sql-server session-state


    【解决方案1】:

    HOW TO: Configure SQL Server to Store ASP.NET Session State

    基本上,你必须在web.config中进行配置:

    <sessionState 
                mode="SQLServer"
                sqlConnectionString="data source=127.0.0.1;user id=<username>;password=<strongpassword>"
                cookieless="false" 
                timeout="20" 
        />
    

    【讨论】:

    • 感谢帮助。但我也这样做了。但我仍然不知道它是如何工作的。我的会话 ID 如何保存到数据库中。即使我不知道这样做是否会维护用户会话。我什至在 web 配置文件中编写了机器密钥,但不知道这一切是如何工作的。我无法想象。请帮助在这种情况下将我视为新手
    【解决方案2】:

    您不需要将会话 ID 存储在数据库中 - 这部分由运行时为您完成,假设您在 SQLServer 模式下使用会话。

    会话提供者会在每次请求开始时从数据库中读取会话数据,并在每次请求结束时写入。它通过设置一个包含会话 ID 的 cookie,然后使用 cookie 的值作为数据库查找的键来查找剩余的会话数据。

    您始终可以通过 Session.SessionID 属性访问会话 ID,但您应该很少需要这样做。

    在您第一次在 Session 对象中保存某些内容之前,不会将 Session ID cookie 发送到客户端(也不会将会话数据保存在 DB 中)。您可以使用 Fiddler 等 Web 调试器轻松查看。

    FWIW,通常不应使用会话状态处理登录。例如,标准 ASP.NET 成员资格提供程序使用基于 cookie 的并行系统。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-12
      • 2012-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多