设为首页 收藏本站
查看: 1352|回复: 0

[经验分享] Session如何保存在sql数据库中

[复制链接]

尚未签到

发表于 2017-7-14 22:31:53 | 显示全部楼层 |阅读模式
  aspnet中,session默认以inproc模式存储,也就是保存在iis进程中,这样有个优点就是效率高,但不利于为本负载均衡扩展。可以把session信息保存在SQL Server中,据说,该种方式比起inproc性能损失为10%-20%。如何实现呢,主要分两步介绍:
  一.这个方法网站找的 具体我也没实现
  1、初始化SQL Server中的状态数据库
  ASP.NET SQL Server 提供注册工具Aspnet_regsql.exe,用于创建供 ASP.NET 中的 SQL Server 提供程序使用的 Microsoft SQL Server 数据库。Aspnet_regsql.exe位于  /%windir%/Microsoft.NET/Framework/<versionNumber>/aspnet_regsql.exe 目录下。如果麻烦,可以 直接用visual studio tools 的命令提示工具中直接输入aspnet_regsql.exe使用。用法如下:

  Aspnet_regsql.exe <options>
  可以用如下的语法来添加默认session数据库ASPState
  aspnet_regsql.exe -S localhost -U sa -P why1234? -ssadd -sstype p
  -S,-U/-P
  必须是大写,分别表示数据库服务器,用户名和密码。
  -ssadd / –ssremove 参数:
  -ssadd表示是添加Session数据库, -ssremove表示移除Session数据库.
  sstype 参数:   
  选项
  说明
  t
  将会话数据存储到 SQL Server tempdb 数据库中。这是默认设置。如果将会话数据存储到 tempdb 数据库中,则在重新启动 SQL Server 时将丢失会话数据。
  p
  将会话数据存储到 ASPState 数据库中,而不是存储到 tempdb 数据库中。
  c
  将会话数据存储到自定义数据库中。如果指定 c 选项,则还必须使用 -d 选项包括自定义数据库的名称。
  创建自定义数据库myAppState,可以用如下的语法:
  aspnet_regsql.exe -S localhost -U sa -P why1234? -ssadd -sstype c -d myAppState
  2、配置webconfig
  在webconfig的  <system.web>节下添加如下配置:
  <sessionState mode="SQLServer"  sqlConnectionString="server=localhost; uid=sa; pwd=123456;"/>
  如果在初始化数据库的时候,创建了自定义数据库可以用类似于如下的的配置:
  <sessionState mode="SQLServer"  allowCustomSqlDatabase="true" sqlConnectionString="server=localhost; DataBase=myAspState;uid=sa; pwd=123456;"/>
  通过以上两步的设置,已经可以了。详细情况请参阅msdn。
  二 .这个方法解决了我的问题
  打开VS2005命令提示,输入:aspnet_regsql.exe -?
  出现了aspnet_regsql.exe的说明,往下拉会看到"会话状态选项",有一命令:-ssadd(Session state add?) 解释说:添加对 sqlserver 模式会话状态的支持.
  估计就是这个了,输入: aspnet_regsql.exe -ssadd
  提示:请指定用户ID,或对受信任的连接使用-E
  输入如下:aspnet_regsql.exe -ssadd -E
  成功.
  也可以指定用户名:aspnet_regsql.exe -ssadd -S 数据库实例名(可指定远程服务器) -U 登录名 -P 密码
  会提示输入密码.正确输入后也会执行成功.
  删除该功能的话执行aspnet_regsql.exe -ssremove -E
  就OK了.
  然后就是在你项目config下<system.web>节点下修改sessionState 配置为<sessionState mode="StateServer" sqlConnectionString="data source=.;userid=sa;password=svse;Trusted_Connection=yes" timeout="720"/>
  注:只需要在你保存的session的服务器数据库执行一次就OK了,并且你所有部署网站的服务器需要打开ASP.NET 状态服务 (ASP.NET state service)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-393965-1-1.html 上篇帖子: SQL Agent服务无法启动如何破 下篇帖子: 在WinCC中通过VBS操作SQL Server2005
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表