• Net中Session的用法


    一、什么是Session?

    简单来说,就是用户与网站服务器建立的一个连接,服务器分配给一个编号。当一台WWW服务器运行时,可能有若干用户正在浏览运行在这台服务器上

    的网站。当用户首次与这台WWW服务器创建连接的时候,它就和这台服务器建立了一个Session,同时服务器会自动为其分配一个SessionID,用来标识

    这个用户的唯一身份,也就是不同的客户端会生成不同的Session对象。存储在对话状态变量中的数据,存在的周期相对较短。实际上SessionID

    是由WWW服务器随机产生的一个由24个字符组成的字符串。

    二、Session的具体使用

    1、Web.Config文件中的Session配置

    mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424"

    sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"

    cookieless="false" timeout="20"  />

    2、必须包含的属性定义

    mode:设置将Session信息存储到哪里,有四种方式:

    Off:设置不使用Session功能。

    InProc :将Session存储在IIS进程内,这是默认值,也最常用(优点是简单,性能最高。但是当重启IIS服务器时Session丢失。);。

    StateServer :将Session存储在ASP.NET状态服务进程中(重新启动Web应用程序时保留会话状态,并使会话状态可以用于网络中的多个Web服务器)。

    SQLServer :将Session存储在SQL Server中(存储在内存和磁盘中,服务器挂掉重启后都还在)。

    3、可选属性的定义

    cookieless:获取或设置一个值,该值指示是否使用 cookie 来标识客户端会话。

    true 如果所有的请求会为无 cookie,或 false 如果没有请求会为无 cookie,或其中一个 HttpCookieMode 值。

    ASP.NET 2.0 版中的默认值是 AutoDetect。 在早期版本中,默认值是 false。

    timeout:设置经过多少分钟后服务器自动回收Session信息,默认为20分钟

    stateConnectionString:在远程存储会话状态时,此属性指定服务器名称和端口。 stateConnectionString 时,属性是必选项 Mode 设置为 StateServer。

    sqlConnectionString:设置为sqlConnectionString 时,属性是必选项 Mode 设置为 SQLServer。

    stateNetworkTimeout:获取或设置 Web 服务器和状态服务器之间的网络连接可以保持空闲的时间量。

    属性值:

    Type: System.TimeSpan

    以秒为单位,Web 服务器和状态服务器之间的网络连接可保持空闲状态,放弃该会话前的时间。 默认值为 10 秒。

    设置为 sessionStateSection 时,属性是必选项 Mode 属性设置为 StateServer。

    3、Session用法示例

    例如:Session["userName"]="小明";//存储信息

    string name=session["userName"];//取值

    Session。Clear();//从Session状态集合中移除所有的键和值

    Session.Abandon();//取消当前Session会话

    三、Session的运行原理图解

    4418040-ef1592011530acf8

    四、Session与Cookie的区别

    1、cookie存客户端,session存服务端。

    2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗。

    3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能考虑到减轻服务器性能方面,应当使用COOKIE。

    4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

    五、常见的Session超时和丢失的情况以及解决方法

    1、服务器内存补充导致Seesion丢失;解决方法:IIs设置Session超时时间,重新设置会话时间,默认为20 min。

    2、杀毒软件扫描Web.cofig;解决方法:设置杀毒软件不扫描Web.cofig配置文件。

    3、程序内部有让Session丢失的代码;解决方法:检查代码处理。

    4、程序有框架页面和跨域情况;解决方法:在Window服务中将ASP.NET State Service 启动。

    欢迎关注我的公众号(同步更新文章):DoNet技术分享平台

    阅读原文

  • 相关阅读:
    【Lintcode】91 最小调整代价
    【LintCode】29 交叉字符串
    十二、动态规划
    HttpClient的简单使用
    ajax跨域请求
    session共享
    八大排序算法
    MAC 脚本批量启动应用
    知识点整理-bio、nio的简单demo
    知识点整理-数组如何实现随机访问?
  • 原文地址:https://www.cnblogs.com/hgmyz/p/12352779.html
Copyright © 2020-2023  润新知