zoukankan      html  css  js  c++  java
  • Session如何保存在sql数据库中

       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)

  • 相关阅读:
    从尾到头打印链表-Python
    上台阶三种实现(斐波那契数列)-Python
    Windows/Linux安装python2.7,pycharm和pandas——《利用Python进行数据分析》
    部署(Django )
    第一个Django模型
    第一个Django Project(创建一个简单的博客)
    几个算法基础
    回文序列—Palindrome
    学习笔记:CentOS7学习之二十:shell脚本的基础
    学习笔记:CentOS7学习之十七: Linux计划任务与日志的管理
  • 原文地址:https://www.cnblogs.com/xuzhen1993/p/6611630.html
Copyright © 2011-2022 走看看