ASP.NET Session的学习

前言 

最近在写一个类似商城的网站,使用了Session来保持用户的登录状态,之前没怎么全面的了解Session,趁这个机会彻底了解下Session,一下内容都是基于自己对网络一些资料和大牛的博客整理,还有一些自己的理解。

1.什么是Session

    Session称为会话状态,是Web系统中最常用的状态,用于维护和当前浏览器实例相关的一些信息。

2.SessionID

当用户首次与Web服务器建立连接的时候,服务器会给当前访问用户分发一个 SessionID作为标识。SessionID是一个由24个字符组成的随机字符串。用户每次提交页面,浏览器都会把这个SessionID包含在 Http头中提交给Web服务器,这样Web服务器就能区分当前请求页面的是哪一个客户端。这个SessionID就是保存在客户端的,属于客户端Session.(ASP.NET中你如果访问一个后台处理页面,可以用Session.SessionID取值)。客户端Session默认是以cookie的形式来存储的,所以当用户禁用了cookie的话,服务器端就得不到SessionID。

3.Session模式和Session Provider

InProc:会话状态被禁用。

StateServer: 会话状态正在处理 ASP.NET 辅助进程。

SQLServer:会话状态正在使用进程外 ASP.NET 状态服务存储状态信息。

Custom:会话状态正在使用进程外 SQL Server 数据库存储状态信息。

OFF:会话状态正在使用自定义数据存储来存储会话状态信息。

总结:

  • 1、  InProc Session Provider是最快的,因为所有数据都存在应用程序的内存里,Session数据在IIS重启,或者站点被回收的情况下丢失,你可以在用户量较小的网站上使用这种模式,但别在Web Farm下使用。
  • 2、  State Server模式:Session数据被存储于aspnet_state.exe应用中,他在Web服务之外保存Session数据,所以Web服务出现问题不会对他的Session数据造成影响,在将Session数据存储到StateServer之前需要序列化对象,在Web Farm中我们能安全地使用这个模式。
  • 3、  SQL Server模式:他将Session数据保存到SQL Server中,我们需要提供连接串,我们存储时也需要对对象进行序列化,这种模式在实际Web Farm的生产环境中是非常有用的。
  • 4、  我们也能使用自定义模式,当我们需要使用一个已经存在的表来存储Session数据时,在自定义模式中,我们也能创建自定义的Session ID,但是不推荐你自己来实现Provider,推荐使用第三方的Provider。

 4.使用介绍

web.config中的配置方式  mode:模式,timeout过期时间(分钟)

<system.web>
    <!--InProc是默认的Session模式-->
    <sessionState mode="InProc" timeout="30"></sessionState>
</system.web>

Sesion的读写

   var  ss=new User();
   Session["user"]=ss;//写入
   var  bb= Session["user"] as User;//读取

参考地址:

文章中的内容出处:【译文】漫谈ASP.NET中的Session   作者:ULiiAn·竹

Asp.net Session认识加强-Session究竟是如何存储你知道吗?   作者:dz45693

ASP.NET中Session的个人浅谈   作者: FlyElephant

原文链接

时间: 2024-10-05 04:29:42

ASP.NET Session的学习的相关文章

ASP.NET图片验证码学习!

1. 新建一个Validate.aspx,然后在Validate.aspx.cs编写代码: using System;using System.Collections;using System.ComponentModel;using System.Data;using System.Web;using System.Drawing;using System.Web.SessionState;using System.Web.UI;using System.Web.UI.WebControls;

(转)探讨:ASP.NET技术的学习顺序问题

探讨:ASP.NET技术的学习顺序问题 摘要:很多人对于ASP.NET的入门和学习顺序比较迷茫,今天让我们一起来跟随作者的思路学习探讨ASP.NET的学习顺序问题,希望有所帮助. 如果你已经有较多的面向对象开发经验,跳过以下这两步: 第一步 掌握一门.NET面向对象语言,C#或VB.NET. 我强烈反对在没系统学过一门面向对象(OO)语言的前提下去学ASP.NET. ASP.NET是一个全面向对象的技术,不懂OO,那绝对学不下去! 第二步 对.NET Framework类库有一定的了解 可以通过

asp.net Session

原因分析:web.config中配置SessionState的mode为StateServer,但服务器没有开启改个服务. 解决方法:1.Web.Config里面 把sessionState 的mode改为"InProc" ;2.在服务中启用"ASP.NET State service" 这样是可以了,但没有理解为什么要这么做.后来在网上找了一上才知道真真的原因. Session模型简介 Session是什么呢?简单来说就是服务器给客户端的一个编号.当一台WWW服务

Asp.Net编程需要学习什么

Asp.Net编程需要学习什么? 数据库 css js或者jquery html 后台的一门语言C# 下面是新手开发需要注意的几点: 重视基础课的学习 计算机虽然是高科技的象征,但又受到其它专业发展的制约.计算机专业知识的学习同样要加强一些相关知识的学习.计算机学习过程往往是由硬件开始,走向软件,但最终又会走向硬件.一个软件开发高手非常注重程序效率,而效率却往往与计算机硬件知识是紧密相关. 因此高等数学.离散数学.线性代数等数学知识的学习也有一定需求.尤其是软件开发高手,开发过程会涉及数学方面往

Asp.Net MVC5入门学习系列④

原文:Asp.Net MVC5入门学习系列④ 添加Model且简单的使用EF 对于EF(EntityFramework)不了解的朋友可以去百度文科或者在园子里搜一些简资源看下,假如和我一样知道EF的概念,那么就知道EF有一个code first的特性,什么意思呢!说的通俗简单明了点就是:通过代码映射到数据库!有朋友会说这里不是添加Model说这个EF干啥呢!说这个code first呢就是我们在一会添加Model的同时我打算利用EF的code first特性把我们的Model映射到数据库,这样我

ASP.NET Session State(会话状态)SQLServer模式和设置

Thursday, December 5, 2013 ASP.NET保存session state(会话状态)有三种模式:In-Process, State Server, SQL Server.SQL Server模式的优点:    即使web application重启,状态数据也会被保存    多个web服务器可以共享状态数据    节省内存设置:    在web.config中,使用mode="SQLServer",例如:    <configuration>   

asp.net session丢失的解决方法小结

现在我就把原因和解决办法写出来. ASP.NET Session丢失原因: 由于Asp.net程序是默认配置,所以Web.Config文件中关于Session的设定如下: < sessionState mode='InProc' stateConnectionString='tcpip=127.0.0.1:42424' sqlConnectionString='data source=127.0.0.1;Trusted_Connection=yes' cookieless='true' time

ASP.Net WebForm温故知新学习笔记:一、aspx与服务器控件探秘

开篇:毫无疑问,ASP.Net WebForm是微软推出的一个跨时代的Web开发模式,它将WinForm开发模式的快捷便利的优点移植到了Web开发上,我们只要学会三步:拖控件→设属性→绑事件,便可以行走于天下.但这样真的就可以走一辈子吗?实际上,ASP.Net经常被喷的诟病就在于WebForm以及只会拖控件的ASP.Net程序员,往往大型互联网系统也没有采用WebForm的模式进行开发.但是,WebForm并不是一无是处,而是我们没有用好,还有很多东西我们知其然不知其所以然,现在我们就来对这些平

Asp.Net MVC5入门学习系列①

原文:Asp.Net MVC5入门学习系列① 现在直接开始MVC5的学习系列,学习资源来自Micrsoft. 开始使用Asp.Net MVC 5 打开Visual Studio 2013,然后新建一个项目,具体如下图: VS13与12/10不同的是创建Web的时候你不能像以前那样直接选你要创建框架项目,而把这个选择集中在了第二步骤,当你操作完上面点击确定就可以看到一个集中所有web框架供你选择的窗体,具体如下: 然后点击确定,vs会帮我们完成创建mvc应用程序的动作. 创建完成后,我们的VS会呈