zoukankan      html  css  js  c++  java
  • 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到自定义的位置;
  • 相关阅读:
    Hdu 5396 Expression (区间Dp)
    Lightoj 1174
    codeforces 570 D. Tree Requests (dfs)
    codeforces 570 E. Pig and Palindromes (DP)
    Hdu 5385 The path
    Hdu 5384 Danganronpa (AC自动机模板)
    Hdu 5372 Segment Game (树状数组)
    Hdu 5379 Mahjong tree (dfs + 组合数)
    Hdu 5371 Hotaru's problem (manacher+枚举)
    Face The Right Way---hdu3276(开关问题)
  • 原文地址:https://www.cnblogs.com/zoupeiyang/p/1451240.html
Copyright © 2011-2022 走看看