Iis 7 SQLServer会话状态

Iis 7 SQLServer会话状态,iis-7,session-state,sql-session-state,Iis 7,Session State,Sql Session State,我正在使用会话状态的InProc模式,但由于应用程序池的回收,我的应用程序一直在重新启动,因此我失去了当前登录用户的会话。我想更改以将其保存在数据库中。我像这样编辑了我的网络配置 <sessionState mode="SQLServer" timeout="20" allowCustomSqlDatabase="true" sqlConnectionString="Data Source=Server;integrated security=True;Initial Catalo

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

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


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

有一个逐步的方法可用。似乎您需要在数据库上运行名为
InstallSqlState.SQL
的SQL文件。

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

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

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


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

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

我使用NuGet/Package Manager安装了“Microsoft ASP.NET Universal Providers”软件包(当前版本为2.0.0),该软件包还安装了Core:

安装软件包Microsoft.AspNet.Providers

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

我不知道如果你的项目中已经有一个“会话”表,它会做什么


ps-我删除了插入的“配置文件”、“成员资格”和“角色管理器”标记,因为我只需要存储会话内容,而不需要存储asp标识的其余部分。

同时,此文件包含说明,您不应直接执行它,但是使用这里描述的aspnet_reqsql.exe:我接受了脚本的建议,并通过VisualStudio命令行运行它,而不是直接运行SQL脚本。例如,为了在本地计算机上安装它,我使用了以下行:aspnet_regsql.exe-ssadd-sstype p-S-E