快速业务通道

ASP.NET服务器控件封装-【事件】-1.2【数据回发】

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20
方式名称 存储方式 性能 Off 设置为不使用Session功能 无 InProc 设置为将Session存储在进程内,就是ASP中的存储方式, 这是默认值。 性能最高 StateServer 设置为将Session存储在独立的状态服务中。通常是 aspnet_state.exe进程. 性能损失10-15% SQLServer 设置将Session存储在SQL Server中。 性能损失10-20%

Customer

我们可以在Web.Config中配置程序使用的Session存储方式.默认情况下是 InProc, 即保存在IIS进程

一.摘要

所有Web程序都会使用Session保存数据. 使用独立的Session服务器可以解决 负载均衡场景中的Session共享问题.本文介绍.NET平台下建立Session服务器的几 种办法, 并介绍在使用Session时的各种经验和技巧.

二.关于Session,SessionID和Cookies

Session数据保存在服务器端, 但是每一个客户端都需要保存一个SessionID, SessionID保存在Cookies中, 关闭浏览器时过期.

在向服务器发送的HTTP请求中会包含SessionID, 服务器端根据SessionID获取 获取此用户的Session信息.

很多初级开发人员不知道SessionID和Cookies的关系, 所以常常认为两者没有 联系. 这是不正确的. 正是因为SessionID保存在Cookies中, 所以在我们保存 Cookies的时候,一定要注意不要因为Cookies的大小和个数问题而导致SessionID 对象. 在我们的程序中, 对SessionID的Cookies有特殊的处理:

    /// <summary>
    /// 写入cookie.
     /// </summary>
    /// <param  name="day"></param>
    ///  <returns></returns>
    public bool SetCookie(int  day)
    {
      string CookieName = GetType ().ToString();
      HttpCookie SessionCookie =  null;

      //对 SessionId 进行备份.
      if  (HttpContext.Current.Request.Cookies["ASP.NET_SessionId"] != null)
      {
        string SesssionId =  HttpContext.Current.Request.Cookies ["ASP.NET_SessionId"].Value.ToString();
         SessionCookie = new HttpCookie("ASP.NET_SessionId");
         SessionCookie.Value = SesssionId;

      }

       //省略掉中间的代码部分.只保留备份SessionID和找回SessionID的逻 辑

      

      //如果cookie总数超过20 个,  重写ASP.NET_SessionId, 以防Session 丢失.
      if  (HttpContext.Current.Request.Cookies.Count > 20 &&  SessionCookie != null)
      {
        if  (SessionCookie.Value != string.Empty)
        {    
          HttpContext.Current.Response.Cookies.Remove ("ASP.NET_SessionId");
           HttpContext.Current.Response.Cookies.Add(SessionCookie);
         }
      }

      return true;
    }

三.搭建Session服务器的几种方式

将Session保存在独立的服务器中可以实现在多台Web服务器之间共享Session. 虽然我们也可以自己开发Session存储系统, 但是使用ASP.NET自带的存储机制将 更加便捷.

.NET提供了5种保存Seission的方式:

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号