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)

Session如何保存在sql数据库中的更多相关文章

  1. Android学习笔记——保存数据到SQL数据库中(Saving Data in SQL Databases)

    知识点: 1.使用SQL Helper创建数据库 2.数据的增删查改(PRDU:Put.Read.Delete.Update) 背景知识: 上篇文章学习了保存文件,今天学习的是保存数据到SQL数据库中 ...

  2. Python实现将图片以二进制格式保存到MySQL数据库中,以及取出:

    创建数据库表格式: CREATE TABLE photo ( photo_no int(6) unsigned NOT NULL auto_increment, image MEDIUMBLOB, P ...

  3. Android - 数据存储 -在SQL数据库中保存数据

    对于重复的或结构化的数据,保存到数据库中是很好的选择,比如联系人信息.这里假设你对SQL数据库大体上了解然后帮助你学习Android上的SQLite数据库.在Android数据库上需要用到的API可以 ...

  4. SQL数据库中临时表、临时变量和WITH AS关键词创建“临时表”的区别

    原文链接:https://www.cnblogs.com/zhaowei303/articles/4204805.html SQL数据库中数据处理时,有时候需要建立临时表,将查询后的结果集放到临时表中 ...

  5. node 爬虫 --- 将爬取到的数据,保存到 mysql 数据库中

    步骤一:安装必要模块 (1)cheerio模块 ,一个类似jQuery的选择器模块,分析HTML利器. (2)request模块,让http请求变的更加简单 (3)mysql模块,node连接mysq ...

  6. 分布式SQL数据库中部分索引的好处

    在优锐课的java学习分享中,探讨了分布式SQL数据库中部分索引的优势,并探讨了性能测试,结果等. 如果使用局部索引而不是常规索引,则在可为空的列上(其中只有一小部分行的该列不具有空值),然后可以大大 ...

  7. SQL语句:把Excel文件中数据导入SQL数据库中的方法

    1.从Excel文件中,导入数据到SQL数据库情况一.如果接受数据导入的表不存在 select * into jd$ from OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ...

  8. 利用session_set_save_handler()函数将session保存到MySQL数据库中

    PHP保存session默认的是采用的文件的方式来保存的,这仅仅在文件的空间开销很小的windows上是可以采用的,但是如果我们采用uinx或者是liux上的文件系统的时候,这样的文件系统的文件空间开 ...

  9. 快速将excel数据保存到Oracle数据库中【转】

    我们在工作中,也许会碰到以下情况,客户或者同事发来需要调查的数据,并不是dmp文件,而是excel文件,此时通常是一张表,少量几条记录.最近我恰好碰到了这种情况,所以做了些调查,不敢藏私,拿出来跟大家 ...

随机推荐

  1. FTP和TCP、UDP

    应用:TFTP客户端 1. TFTP协议介绍 TFTP(Trivial File Transfer Protocol,简单文件传输协议) 是TCP/IP协议族中的一个用来在客户端与服务器之间进行简单文 ...

  2. ffmpeg默认输出中文为 UTF-8

    在使用ffmpeg 进行对音视频文件解码输出信息的时候会出现乱码. 从网上找到了说ffmpeg默认格式 为 utf-8 如果vs工程使用的的 Unicode 则需要将 utf-8转 Unicode 才 ...

  3. Maven(九)”编码 gbk 的不可映射字符“ 问题解决方案

    解决这个问题的思路: 在maven的编译插件中声明正确的字符集编码编码——编译使用的字符集编码与代码文件使用的字符集编码一致!! 安装系统之后,一般中文系统默认字符集是GBK.我们安装的软件一般都继承 ...

  4. iscroll源码学习(1)

    iscroll是移端端开发的两大利器之一(另一个是fastclick),为了将它整合的avalon,需要对它认真学习一番.下面是我的笔记. 第一天看的是它的工具类util.js //用于做函数节流 v ...

  5. 关于html与body的高度问题

    转自https://blog.csdn.net/javaloveiphone/article/details/51098972 一.html,body{height:100%} 今天看到一个CSS样式 ...

  6. java把流抛给浏览器下载时,当下载的文件文件名为中文时,出现中文名被替换为“----------”的情况

    比如说,下载的文件名为: 软件分析报告.docx,当使用流抛给浏览器下载时,浏览器下载的文件为:-----------.docx 出现这种情况的原因:大体的原因就是header中只支持ASCII,所以 ...

  7. php中++i 与 i++ 的区分详解

    在编程时我们常会使用到i++和++i,那两者之间有什么区别呢,本教程就为大家详细介绍一下. 1.++i 的用法(以 a=++i ,i=2 为例) 先将 i 值加 1 (也就是 i=i+1 ),然后赋给 ...

  8. python简单爬虫(一)

    学习python前纠结了下,到底是应该一个个知识点吃透,然后写些小程序.还是应该快速掌握基础语法,快速实践.思考后认为前者这么学习速度真心不高,于是花2天时间看了下python3的语法,虽然很多都不明 ...

  9. sql判断表是否已经存在

    if (object_id(N'td_VipExchangeCodeInfo',N'U') is not null)print '存在'else print '不存在'

  10. HTML5 桌面消息提醒

    Notification HTML5新属性,复制代码创建HTML文件,浏览器查看效果 <!DOCTYPE html> <html lang="en"> &l ...