不知道如何在sql会话状态中存储会话ID

时间:2009-12-31 12:22:18

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

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

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

2 个答案:

答案 0 :(得分:4)

请参阅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" 
    />

答案 1 :(得分:3)

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

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

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

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

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