我正在使用SessionState的InProc模式,但由于应用程序池的回收,我的应用程序一直在重新启动,因此我正在丢失当前登录用户的会话。我想更改以将其保存在数据库中。我像这样编辑了我的webconfig
<sessionState mode="SQLServer" timeout="20" allowCustomSqlDatabase="true"
sqlConnectionString="Data Source=Server;integrated security=True;Initial Catalog=SerialTracker;"
cookieless="false" />
我是否必须为会话状态或新数据库创建一些表?我的托管是共享的,因此我无法访问管理控制台或其他任何内容。
答案 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标识。