• ASP.NET2.0揭秘读书笔记六——使用会话状态Session


     
    和cookie不一样的是,Session状态没有大小限制。如果有极端的要求,可以使用Session保存上G的数据。并且Session可以保存更复杂的对象,例如可以在Session中保存一个DataSet。
        当使用一个Session状态时,一个名为ASP.NET_SessionId的cookie会自动添加到浏览器。这个cookie包含一个唯一的标识符,它可以在页面切换时跟踪用户。
        默认情况下,如果cookie被禁用了,Session状态也不能正常工作了。默认情况下,假设用户超过20分钟不请求任何页面,保存在Session状态中的数据会被丢弃。

    使用Session对象
        用户操作Session状态最主要的应用程序编程接口是HttpSessionState类。该对象被 Page.Session,Context.Session,UserControl.Session,WebService.Session和 Application.Session属性暴露。也就是说基本可以在任何地方访问到Session状态。

    HttpSessionState支持下面这些属性:

    CookieMode——用来指定是否启用不依赖cookie的Session状态功能。
    Count——用来获得Session状态中包含项的数量。
    IsCookieless——用来指定是否启用不依赖cookie的Session状态功能。
    IsNewSession——用来检测当前请求是否创建了新的用户会话;
    IsReadOnly——是否只读;
    Keys——用来获取保存在Session状态中项目的名称列表;
    Mode——用来指定当前Session状态的存储处理程序。
    SessionID——用来获得唯一的会话标识符;
    Timeout——用来指定Web服务器假设用户离开并取消Session状态过期分钟数。最大为525600分钟(1年);
    HttpSessionState对象还包含以下方法:
    Abandon——用来终止一个用户会话;
    Clear——用来清除Session状态中所有项目;
    Remove——用来从Session状态中删除特定的项目;

    提交会话事件

    Global.asax中包含两个可以处理的关联Session状态的事件:Session Start和Session End事件。Session Start事件是在一个新会话开始时触发的,Session End事件在会话终止时被触发。

    会话失效控制

    默认情况下,20分钟内用户不请求页面,Session过期。可以在配置文件修改Session的过期时间:

    <?xml version="1.0"?>
    <configuration>
    <system.web>
    <sessionState timeout="60" />
    </system.web>
    </configuration>
    也可以用编程的方式来改变Session状态的过期时间
    Session.Timeout = 60;

    使用Cookieless的会话状态
      默认情况下,Session状态依赖cookie。如果用户浏览器禁止了cookie,默认情况下Session状态就不能工作。这种情况下可以使用无cookie的会话,当启用无cookie的会话时,用户的会话ID就会添加到页面的URL中。
    可以修改配置文件的sessionState元素,配置cookieless的值为AutoDetect。

    <?xml version="1.0"?>
    <configuration>
    <system.web>
    <sessionState cookieless="AutoDetect"
    regenerateExpiredSessionId="true" />
    </system.web>
    </configuration>
    配置Session状态管理
    默认情况下,Session状态被保存在ASP.NET所在的相同进程,这样就导致了进程内Session状态很脆弱以及进程内Session状态可伸缩性较差的缺点。
    如果你要想使Session状态更健壮,ASP.NET  Framework提供了多种方式。如可以修改Session状态模式配置ASP.NET Framewor把Session状态存储到另一个地方。
    那么Session状态的模式有哪些值呢?
    Off——禁用Session状态;
    InProc——默认模式,即在ASP.NET所在的进程存储Session状态;
    StateServer——存储Session状态到独立于ASP.NET进程的一个Windows NT进程;
    SQLServer——存储Session状态到SQL Server数据库;
    Custom——存储Session到自定义的位置;
  • 相关阅读:
    纯JS.CSS编写的可拖拽并左右分栏的插件(复制代码就能用)
    jquery on()方法重复绑定解决方法
    在PHP语言中使用JSON和将json还原成数组
    Flex 布局教程:语法篇
    在线生成大全(这里真的什么都有)
    css3(border-radius)边框圆角详解
    css常用鼠标指针形状代码
    input 正则限制输入内容
    html中input标签的tabindex属性
    CSS gradient渐变之webkit核心浏览器下的使用
  • 原文地址:https://www.cnblogs.com/zoupeiyang/p/1451240.html
Copyright © 2020-2023  润新知