很多时候,由于各种莫名其妙的原因,会导致session丢失。不过ASP.NET还允许将会话数据存储到一个数据库服务器中,方法是将mode属性变成SqlServer。 在这种情况下,ASP.NET尝试将会话数据存储到由sqlConnectionString属性(其中包含数据源以及登录服务器所需的安全凭证)指定的SQL Server中,这样能够保证session丢失的问题。

1、  配置ASPState session 数据库

在命令行下运行如下命令:aspnet_regsql.exe  -ssadd -sstype p -S <SQL Server IP> -U <User Name> -P <Password>

该命令对此应用进行了持久化操作。这时会看到多一个ASPState数据库,里面两张表,ASPStateTempSessions就可以用来保存Session。

注:<SQL Server IP>为数据库实例名,<User Name>为sa(或与sa同等权限的),<Password> 为 sa用户名的密码

2、应用时,需要在webconfig中添加如下配置:

配置节点如下:
<sessionState mode="SQLServer" sqlConnectionString="data
source=<Server IP>;database=<Database Name>;uid=<UserName>;password=<Password>;"cookieless="false" timeout="20" />

虽然timeout设置的是20分钟但是 过期以后仍然可以获取到session的值。

3. 项目应用

1. 新建项目 web项目,在加入如下代码:

Session["SessionID"] =
DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
Response.Write(Session["SessionID"]);

2. web.config 中增加sessionState 配置

<sessionState
mode="SQLServer" timeout="40"
allowCustomSqlDatabase="false" sqlConnectionString="data source=xxx;uid=sa;password=sasa"/>

3. 运行该网站,之后查看数据库ASPState中的数据表ASPStateTempSessions增加了一条数据

注意:只有在写session 的时候,才会在ASPStateTempSessions表里增加了一条session记录。

1. SessionId包括两个部分:网站生成的24位SessionID及8位AppID,AppName对于不同的站点,其AppName不同,在能够在不同站点下使24位SessionID相同的情况下。

2. Created和Expires是这个Session的创建日期和有效期 这个有效期是根据配置文件中TimeOut算出来的,虽然时间达到有效期了 但是还能获取到session(不知道这个有效期有什么用,但是用SqlServer的Session的模式 就是为了不掉线,这点也符合了这个初衷)

3. LockData与LockDataLocal都是最后一次更新Session的时间 (每次操作该Session的时候,它的有效期都会改变)。

4. TimeOut是配置文件中配置的超时分钟数(这里的1是我测试超时时间的时候临时在配置文件中改的,默认是20).

5. SessionItemShort是真正的Session的内容,数据类型是varbinary(7000),存的内容可以是int string 等常用类型,如果是集合或是对象,则必须是可序列化的([Serializable]可序列化的属性)。

注意:要设置Session过期删除,启动SQL server 代理中的作业完成。

Session的SqlServer模式的配置的更多相关文章

  1. asp.net SessionState模式的配置及使用

    由于项目dll文件变动比较频繁,而保存登陆的状态又保存在Session中,所以导致用户经常无故掉线(PS:dll变动的时候导致Session).有一种方法可以长期保存session,那就是sessio ...

  2. 关于:“无法序列化会话状态。在“StateServer”或“SQLServer”模式下,...的问题

    关于:“无法序列化会话状态.在“StateServer”或“SQLServer”模式下,...的问题 错误描述: 无法序列化会话状态.在“StateServer”或“SQLServer”模式下,ASP ...

  3. open Session In View和过滤器配置

    Open Session In View模式的主要思想是:当Web Request(浏览器请求)开始时,自动打开Session,当Web Request结束时,自动关闭Session.也就是说,Ses ...

  4. [转]ASP.NET会话(Session)保存模式

    本文转自:http://blog.csdn.net/cityhunter172/article/details/727743 作者:寒羽枫(cityhunter172) 大家好,已有四个多月没写东东啦 ...

  5. ASP.NET会话(Session)保存模式--终于知道session为什么丢失了

    [原创]ASP.NET会话(Session)保存模式 作者:寒羽枫(cityhunter172) 大家好,已有四个多月没写东东啦.今日抽空就说一下 Session 在 .Net v1.0/v1.1 中 ...

  6. SharePoint 2013+ Sqlserver 2014 Kerberos 配置传奇, 最终的解决方案 验证。

    SharePoint 2013+ Sqlserver 2014 Kerberos 配置传奇. 1,安装数据库,我就不多说安装,客户一定要注意. 我将参照以下实施例和账户. 2,建立DNS,假设没有DN ...

  7. open Session In View模式

    首先看图说话: ****Open Session In View模式的主要思想是:在用户的每一次请求过程始终保持一个Session对象打开着*** 接下来就是代码: +++++++++++++++++ ...

  8. SQLServer数据库镜像配置

    目录 一.目标...2 二.前提条件.限制和建议...2 三.设置概述...2 四.安装Sql Server 2008 enterprise X64.3 4.1.安装.NET3.5.3 4.2.安装时 ...

  9. 无法序列化会话状态。在“StateServer”或“SQLServer”模式下,ASP.NET 将序列化会话状态对象,因此不允许使用无法序列化的对象或 MarshalByRef 对象。如果自定义会话状态存储在“Custom”模式下执行了类似的序列化,则适用同样的限制。

    将项目部署到服务器后发现有如下问题,查了网上好多说是需要被序列化的类没有写上[Serializable]标志,所以把全部需要序列化的列都写上了标志发现还是不是,最后查到了发现网上说的并不太准确,而是需 ...

随机推荐

  1. EPUBBuilder编辑器新版

    epub全称为Electronic Publication的缩写,意为:电子出版, epub于2007年9月成为国际数位出版论坛(IDPF)的正式标准,以取代旧的开放Open eBook电子书标准,e ...

  2. poj1655 树的重心 树形dp

    树的重心定义为:找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心,删去重心后,生成的多棵树尽可能平衡. 处理处每个节点的孩子有几个,和树的大小就好了. #include< ...

  3. 怎么解决mysql不允许远程连接的错误

    最近使用Navicat for MySQl访问远程mysql数据库,出现报错,显示"1130 - Host'xxx.xxx.xxx.xxx' is not allowed to connec ...

  4. selenium+webdriver+python 中警告框的处理方法

    在自动化测试过程中,经常会遇到弹出警告框的情况,如图所示: 在 WebDriver 中处理 JavaScript 所生成的 alert.confirm 以及 prompt 是很简单的.具体做法是使用  ...

  5. perl 哈希 连接符

    #!/usr/bin/perl -w use strict; my $test_1 = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; my $test_2 ...

  6. c# 监听文件夹动作

    static FileSystemWatcher watcher = new FileSystemWatcher(); /// <summary>        /// 初始化监听     ...

  7. Hive 窗口函数、分析函数

    1 分析函数:用于等级.百分点.n分片等 Ntile 是Hive很强大的一个分析函数. 可以看成是:它把有序的数据集合 平均分配 到 指定的数量(num)个桶中, 将桶号分配给每一行.如果不能平均分配 ...

  8. 【BZOJ-1912】patrol巡逻 树的直径 + DFS(树形DP)

    1912: [Apio2010]patrol 巡逻 Time Limit: 4 Sec  Memory Limit: 64 MBSubmit: 1034  Solved: 562[Submit][St ...

  9. VS调试时同时启动多个项目解决方法

    选中要设置的项目,不要右击里面的属性,而是按f4时显示属性,下面总是在调试时启动设为false.

  10. 数据结构算法C语言实现(二)---2.3线性表的链式表示和实现之单链表

    一.简述 [暂无] 二.头文件 #ifndef _2_3_part1_H_ #define _2_3_part1_H_ //2_3_part1.h /** author:zhaoyu email:zh ...