我正在使用SessionState的InProc模式,但我的应用程序由于应用程序池的回收而不断重启,因此我正在丢失当前登录用户的会话。我想更改为将其保存在数据库中。我这样编辑我的webconfig
<sessionState mode="SQLServer" timeout="20" allowCustomSqlDatabase="true"
sqlConnectionString="Data Source=Server;integrated security=True;Initial Catalog=SerialTracker;"
cookieless="false" />
我必须为会话状态或新数据库创建一些表吗?我的主机是共享的,所以我不能访问管理控制台或其他任何东西。
发布于 2013-03-05 21:21:30
有一个step by step HowTo可用here。您似乎需要在数据库上运行一个名为InstallSqlState.sql
的SQL文件。
发布于 2013-05-23 22:57:15
是的,您必须使用您可以在%系统驱动器号%/Microsoft.NET/ InstallSqlState.sql /%v中找到的框架脚本。
示例: c:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallSqlState.sql
还要考虑脚本创建的AspState数据库,默认情况下,该数据库不会保留会话数据:这些数据将存储在临时数据库表中。
如果这些对你没有好处,有一种方法可以将数据保存在AspState DB中,看看here。
发布于 2015-06-19 05:20:59
从2015年开始,您不需要运行脚本,Universal Provider包使用实体框架来创建它需要的表。
我使用NuGet/Package Manager安装了'Microsoft Providers‘包(当前版本为2.0.0),该包还安装了ASP.NET:
安装-打包Microsoft.AspNet.Providers
它会在您的web.config文件中插入一些(注释的)项。我按照注释中的说明将“InProc”更改为“Custom”,并使用到数据库的连接字符串对其进行设置。在第一次运行时,它在我的数据库中创建了一个'Sessions‘表,并将会话数据存储在其中。
我不确定如果你的项目中已经有了一个'Sessions‘表,它会做什么。
ps -I删除了它插入的'profile','membership‘和'rolemanager’标签,因为我只需要存储会话内容,而不需要存储asp标识的其余部分。
https://stackoverflow.com/questions/15224075
复制相似问题