SQLServer SessionState

时间:2013-03-05 12:41:00

标签: iis-7 session-state sql-session-state

我正在使用SessionState的InProc模式,但由于应用程序池的回收,我的应用程序一直在重新启动,因此我正在丢失当前登录用户的会话。我想更改以将其保存在数据库中。我像这样编辑了我的webconfig

<sessionState mode="SQLServer" timeout="20" allowCustomSqlDatabase="true"
    sqlConnectionString="Data Source=Server;integrated security=True;Initial Catalog=SerialTracker;"
    cookieless="false" />

我是否必须为会话状态或新数据库创建一些表?我的托管是共享的,因此我无法访问管理控制台或其他任何内容。

3 个答案:

答案 0 :(得分:2)

有一个循序渐进的HowTo available here。似乎您需要在数据库上运行名为InstallSqlState.sql的SQL文件。

答案 1 :(得分:0)

是的,你必须使用你可以找到的InstallSqlState.sql脚本 - 根据机器 - %System Drive Letter%/ Microsoft .NET / Framework /%v。????%

示例:c:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ InstallSqlState.sql

还要考虑脚本创建一个AspState DB,默认情况下不会保留会话数据:这些将存储在tempdb表中。

如果这些对您不利,可以在AspState DB中保存数据,看看here

答案 2 :(得分:0)

截至2015年,您不需要运行脚本,Universal Provider软件包使用Entity Framework创建所需的表。

我使用NuGet / Package Manager来安装Microsoft ASP.NET Universal Providers&#39; package(目前为2.0.0),它还安装了Core:

安装 - 打包Microsoft.AspNet.Providers

它会在您的web.config文件中插入一些(注释的)项目。我按照评论中的说明更改了InProc&#39;到&#39; Custom&#39;并使用连接字符串将其设置为我的数据库。在第一次运行时,它会创建一个&#39; Sessions&#39;我的数据库中的表,并将会话数据存储在那里。

我不确定如果你已经有一个&#39; Sessions&#39;它会怎么做?你项目中的表格。

ps - 我删除了&#39;个人资料&#39;会员&#39;&#39;角色管理员&#39;它插入的标签,因为我只需要存储会话内容,而不是其余的asp标识。