1

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

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

我是否必须为会话状态或新数据库创建一些表?我的主机是共享的,所以我无法访问管理控制台或其他任何东西。

4

3 回答 3

2

这里有一个分步操作方法。似乎您将需要运行InstallSqlState.sql在数据库上命名的 SQL 文件。

于 2013-03-05T13:21:29.617 回答
1

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

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

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

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

于 2013-05-23T14:57:15.260 回答
0

自 2015 年起,您无需运行脚本,Universal Provider 包使用实体框架来创建它需要的表。

我使用 NuGet/Package Manager 安装了“Microsoft ASP.NET Universal Providers”包(当前为 v 2.0.0),该包也安装了核心:

安装包 Microsoft.AspNet.Providers

它会在您的 web.config 文件中插入一些(已注释的)项目。我按照评论中的说明将“InProc”更改为“自定义”,并使用我的数据库的连接字符串进行设置。第一次运行时,它会在我的数据库中创建一个“会话”表并将会话数据存储在其中。

如果您的项目中已经有一个“会话”表,我不确定它会做什么。

ps - 我删除了它插入的“profile”、“membership”和“rolemanager”标签,因为我只需要存储会话内容,而不是 asp 身份的其余部分。

于 2015-06-18T21:20:59.047 回答