进程外Session 转载

进程外Session

文章来自:http://blog.csdn.net/dyllove98/article/details/8698397

三种Session: 1.InProc(进程内)-Asp.Net默认就是这种

优点:速度快

缺点:但内存小,存储有限,易爆满导致重启数据丢失

进程外:可以在IIS或ASPNET服务意外关闭时继续保持状态,注意此时存储到session中的对象必须支持序列化:

2.StateServer:使用aspnet_state.exe

2.1开启服务:我的电脑-管理-服务与应用程序-服务-ASP.NET State Service(ASP.NET 状态服务)

2.2修改配置文件:                   <system.web>节点中添加<sessionState mode="StateServer" stateConnectionString="tcpip=localhost:42424"/>【ASP.NET 状态服务端口号默认:42424】

2.3ASP.NET 状态服务只限本机使用如果需要保存外部的Session需要修改注册表

设置是否允许远程使用,位置:C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319                   HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRenoteConnection 值改为 1

测试代码如下:

using System;
namespace WebForm {
    public partial class OutSession : System.Web.UI. Page {
        protected void Page_Load( object sender, EventArgs e) {
            if (Session["key" ] != null) {
                Person p = (Person )Session[ "key"];
                Response.Write(p.GetName());
            } else {
                Session[ "key" ] = new Person( "piziyimao" );
            }
        }
    }
    [ Serializable] //必须是可序列化的类
    public class Person {
        public Person(string n) {
            name = n;
        }
        private string name;
        public string GetName() {
            return name;
        }
    }
}

Web.Config

<? xml version =" 1.0 "?>
< configuration>
       < system.web >
              < compilation debug = "true " targetFramework = "4.0 " />
        < sessionState mode = "StateServer "
                      stateConnectionString =" tcpip=localhost:42424 "/>
       </ system.web >
       < connectionStrings >
              < add name = "ConnStr " connectionString =" server=.;database=School;uid=sa;pwd=123456 " />
       </ connectionStrings >
</ configuration>

3.SQLServer

3.1使用aspnet_regsql.exe运行Session数据库脚本脚本路径C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319

临时储存区:InstallSqlState.sql & UninstallSqlState.sql

永久储存区:InstallPersistSqlState.sql & UninstallPersistSqlState.sql(InstallPersistSqlState需要使用ASPState数据库  需自己创建)

3.2修改配置文件如下:

<? xml version =" 1.0 "?>
< configuration>
       < system.web >
              < compilation debug = "true " targetFramework = "4.0 " />
        < sessionState mode = "SQLServer"/>
       </ system.web >
       < connectionStrings >
              < add name = "ConnStr " connectionString =" server=.;database=School;uid=sa;pwd=123456 " />
       </ connectionStrings >
</ configuration>
时间: 2024-11-08 23:54:54

进程外Session 转载的相关文章

.net学习之进程外Session的配置

转载地址:http://www.cnblogs.com/rohelm/archive/2012/05/13/2498465.html 人人都知道怎么去使用session,但是初学者,尤其是自学的学生可能对于进程外的Session不甚了解,今天我就花半个小时做个简单的示范. 首先,session其虽然是基于cookie的,同时只对本次会话来产生效果,(原理很简单,就是字典内保存一个字典,外层字典的key也就是asp_netsessionId是由.NET自动分配的并保存到只对本次会话有效的cooki

第四节:框架前期准备篇之进程外Session的两种配置方式

一. 基本介绍 1. 背景:Asp.Net默认的Session机制是进程内,存储在服务器端内存中,有这么几个缺点: ①:既然存在内存中,空间有限,不能存储大数据量信息,数据量多的话Session会被挤爆. ②:IIS只要一重启,Session就会丢失,哪怕就是改一下配置文件,IIS也会重启,此时如果客户端有用户通过浏览器正在访问该网站,如果用到Session,原Session是丢失的了,就会报“未将对象引用设置到对象的实例”类似的错误. ③:Session是依赖Cookie来保存SessionI

Cookie和Session(session过程和设置进程外session)

cookie 和  session 的区别 cookie 是保存在客户端上的一种机制   而session 是保存在服务端的一种机制 cookie的理解: 打个简单的比方,一个人生病了去A医院看病,回来的时候医生给了病人一个病历本(相当于cookie)  那么下次病人去复查的时候  就要带着这个病例本队A医院,如果拿着这个病历本去了B医院 B医院肯定是不承认的(不能够跨域取cookie,比如a.com的cookie只能由a.com, x.a.com, y.a.com等站点读取,b.com则不可以

进程外Session

1.Session保存在SQLServer中配置方法: 1)运行.NetFramework安装目录下对应版本的aspnet_regsql.exe 来创建相关的数据库.表和存储过程等,比如: C:\Windows\Microsoft.NET\Framework\v4.0.30319>aspnet_regsql.exe -ssadd -sstype p -S 127.0.0.1 -U sa -P 123456 其中-sstype p表示数据库名固定为ASPState,-S(大写)为数据库服务器地址,

探索ASP.NET MVC5系列之~~~5.Session篇(进程外Session)

其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程(不妥之处欢迎指正) 汇总:http://www.cnblogs.com/dunitian/p/4822808.html#mvc 本章Demo:https://github.com/dunitian/LoTCodeBase/blob/master/NetCode/6.网页基础/BMVC5/MVC5Base/Controllers/SessionController.cs 方法有很多,今天主要说不改代码的那两种(状

配置进程外Session

配置进程外Session: (1)将服务器Session信息存储在进程外           <1> 首先,开启asp.net state 服务: 控制面板 -> 程序和功能 -> “打开或者关闭 Windows 功能”对话框 -> Internet 信息服务 -> 万维网服务 -> 应用程序开发功能 -> ASP.NET.(Control Panel -> Programs - > Programs and Features -> Tur

探索ASP.NET MVC5系列之~~~6.Session篇(进程外Session)

其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程(不妥之处欢迎指正) 汇总:http://www.cnblogs.com/dunitian/p/4822808.html#mvc 本章Demo:https://github.com/dunitian/LoTCodeBase/blob/master/NetCode/6.网页基础/BMVC5/MVC5Base/Controllers/SessionController.cs 方法有很多,今天主要说不改代码的那两种(状

进程外session(session保存在sqlserver)

1.Session保存在SQLServer中配置方法 1)运行.NetFramework安装目录下对应版本的aspnet_regsql.exe 来创建相关的数据库.表和存储过程等,比如: C:\Windows\Microsoft.NET\Framework\v4.0.30319>aspnet_regsql.exe -ssadd -sstype p -S 127.0.0.1 -U sa -P 123456 其中-sstype p表示数据库名固定为ASPState,-S(大写)为数据库服务器地址,-

Net Core 使用Redis保存进程外session

Redsi下载地址:https://github.com/MSOpenTech/redis/releases . 下载后解压 找到redis.windows.conf文件, (修改密码这步骤可省略) 打开 找到requirepass 节点 ,放开注释符 “#”  ,后面的值改成自己要设置的密码 打开 cmd 窗口,使用 cd 命令切换目录到程序解压的目录或者直接到解压文件的目录下地址栏输入cmd回车 redis-server.exe redis.windows.conf 新启动一个cmd窗口 r