我将 ASP.NET 移到了一个数据库中,无论如何这更可靠。谷歌搜索这个并没有带回一个明确的方法来做到这一点。以下是配置 SQL Server 以存储 ASP.NET 会话状态的方法:
不要手动运行任何 SQL 脚本。转到 C:\Windows\Microsoft.NET\Framework\v4.0.30319 并运行以下命令:
aspnet_regsql.exe -S [server]-U [username] -P [password] -d ASPState -ssadd -sstype c
如果您使用集成安全性,请在命令执行中包含 -E 而不是用户名和密码。集成安全性是您在使 ASP.NET 会话正常工作时遇到问题的地方。据我所知,您必须在对 aspnet_regsql.exe 的 cmd 调用中声明数据库名称,以便您可以包含 -sstype c 选项,以便正确设置集成安全性。(顺便说一下,微软给数据库的默认名称是 ASPState,我建议你坚持使用)。您还需要在您添加的 web.config 元素中声明 allowCustomSqlDatabase="true"<system.web>
父元素。具有讽刺意味的是,如果您坚持使用默认名称 ASPState,则无需在 sqlConnectionString 属性中声明数据库名称,即使 allowCustomSqlDatabase 属性与会话状态数据库的自定义名称直接相关。
<sessionState
mode="SQLServer"
sqlConnectionString="Server=[database_ip];Trusted_Connection=true;"
cookieless="false"
timeout="20"
allowCustomSqlDatabase="true"
/>
您必须为数据库中的应用程序池用户授予以下权限:
摘自本文:
将应用程序池用户添加到 ASPState 数据库的用户登录中,将他与 db_datareader 和 db_datawriter 角色相关联
打开 ASPState 数据库的“属性”对话框,选择“权限”选项卡并为应用程序池用户提供 ASPState 数据库的 EXECUTE/SELECT/INSERT/DELETE/UPDATE 权限。