最近开发项目,由于涉及到Session保持的问题,最终查了一下网络上的相关方法,感觉用sqlserver来保存Session好一点,经过综合测试,通过界面设置sqlSERVER SESSION会出问题,综合网上查找的资料做以下总结:
sqlServer
(1).net2.0以上,建议不要使用aspnet_regsql.exe工具,而应该使用命令行,如aspnet_regsql -C "Data Source=.;Integrated Security=True" -ssadd -sstype c -d SessionStateDB
原因是使用工具容易产生错误:sql 服务器上未安装 ASP.NET 2.0 版会话状态,因此无法使用 sql Server。请安装 ASP.NET 会话状态 sql Server 2.0 版或更高版本。
此时的配置文件应该是如下格式:<sessionState mode="sqlServer" allowCustomsqlDatabase="true" sqlConnectionString="data source=VM2008;initial catalog=SessionStateDB;user id=sa;password=ioffice" timeout="30" />
(2)当机器上同时存在.net1.1和.net2.0的时候,建议使用.net2.0的脚本。
(3)sqlServer模式容易带来效率上的开销,每个页面都会对数据库进行读写2次操作。解决办法在web.config文件中的system.web下的page修改属性,如<pages enableSessionState="ReadOnly"> 或者<pages enableSessionState="False">,在ioffice中一般使用readonly。同时把需要改写session的页面的EnableSessionState="True",一般是登录登出页面。
aspnet_regsql.exe 参数解析
-- 常规选项 --
-? 显示此帮助文本。
-W 向导模式。(如果未指定其他参数,则默认为此模式。)
-- sql 连接选项 --
-S <server> 要使用的 sql Server 实例(sql Server 7.0 及更高版本)。
-U <login id> 用于进行身份验证的 sql Server 用户名;需要 -P 选项。
-P <password> 进行身份验证时使用的 sql Server 密码;需要 -U 选项。
-E 使用当前 Windows 凭据进行身份验证。
-C <connection string>
连接字符串。不指定用户名、密码和服务器名称,而是指定 sql Server
连接字符串。该字符串不得包含数据库名称,除非另行指定。
-sqlexportonly <filename>
生成用于添加或移除指定的功能、但不执行实际操作的 sql 脚本文件。可与以下选项一起使用: -A、-R、-ssadd 和 -ssremove。
-- 应用程序服务选项 --
-A all|m|r|p|c|w 添加对某个功能的支持。可同时指定多个值。例如:
-A mp
-A m -A p
all: 所有功能
m: 成员资格
r: 角色管理器
p: 配置文件
c: 个性化设置
w: sql Web 事件提供程序
-R all|m|r|p|c|w 移除对一个功能的支持。可同时指定多个值。例如:
-R mp
-R m -R p
all : 所有功能以及由这些功能共享的所有公共表和存储过程
m: 成员资格
r: 角色管理器
p: 配置文件
c: 个性化设置
w: sql Web 事件提供程序
-d <database> 用于应用程序服务的数据库名称。如果未指定任何数据库名称,则使用默认数据库“aspnetdb”。
-- sql 缓存依赖项选项(用于 sql 7.0 和 2000) --
-d <database> 用于 sql 7.0 和 sql 2000 中的 sql 缓存依赖项的数据库名称。也可以改为选择使用带有 -C
选项的连接字符串指定该数据库。(必需)
-et 为 sql 缓存依赖项启用表。需要 -t 选项。
-dt 为 sql 缓存依赖项禁用表。需要 -t 选项。
-t <table> 要为 sql 缓存依赖项启用或禁用的表的名称。需要 -et 或 -dt 选项。
-lt 列出为 sql 缓存依赖项启用的所有表。
-- 会话状态选项 --
-ssadd 添加对 sqlServer 模式会话状态的支持。
-ssremove 移除对 sqlServer 模式会话状态的支持。
t: 临时。会话状态数据存储在“tempdb”数据库中。用于管理会话的存储过程安装在“ASPState”数据库中。如果重新启动
sql,则不保持数据。(默认)
p: 保持。会话状态数据和存储过程都存储在“ASPState”数据库中。
总结:使用sqlserver模式保存Session:即在命令行中输入C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
aspnet_regsql.exe -C "Data Source=.;Integrated Security=True" -ssadd -sstype p
即可创建ASPState数据库保存Session状态。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。