• Asp.Net HttpApplication请求管道与Session(二)


    Asp.Net 回话的创建与结束

            LogHelper.LogHelper _log = new LogHelper.LogHelper();
            /// <summary>
            /// 程序开始----隐藏事件
            /// </summary>
            protected void Application_Start()
            {
                AreaRegistration.RegisterAllAreas();
                FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
                RouteConfig.RegisterRoutes(RouteTable.Routes);
                BundleConfig.RegisterBundles(BundleTable.Bundles);
                _log.WriteLine("程序开始");
            }
            /// <summary>
            /// 程序结束----隐藏事件
            /// </summary>
            protected void Application_End()
            {
                _log.WriteLine("程序结束");
            }
            /// <summary>
            /// 回话开始----隐藏事件
            /// 当用户指定浏览器第一次访问网站 创建 ASP.NET_SessionId 回话开始,
            /// 当用户关闭浏览器,再次使用相同浏览器访问网站,重新创建 ASP.NET_SessionId 新的回话开始
            /// </summary>
            protected void Session_Start()
            {
                _log.WriteLine("回话开始,count=" + Session.Count + ",回话ID:" + Session.SessionID);
                StringBuilder builder = new StringBuilder();
                foreach (string item in Session.Keys)
                {
                    string line = string.Format("---{0}:{1}", item, Session[item]);
                    builder.AppendLine(line);
                }
                _log.WriteLine(builder.ToString());
            }
            /// <summary>
            /// 回话结束----隐藏事件
            /// 当程序结束,清除服务器所有的回话ID,每个回话ID的删除都会触发该事件
            /// 在同一个回话ID中,只能访问当前回话中创建的Session 数据
            /// </summary>
            protected void Session_End()
            {
                _log.WriteLine("回话结束,count=" + Session.Count + ",回话ID:" + Session.SessionID);
                StringBuilder builder = new StringBuilder();
                foreach (string item in Session.Keys)
                {
                    string line = string.Format("---{0}:{1}", item, Session[item]);
                    builder.AppendLine(line);
                }
                _log.WriteLine(builder.ToString());
            }

    1.第一次打开浏览器访问

    2.添加Session数据后访问

    3.关闭浏览器,再次打开访问

    4.步骤跟踪

    注:

    1.只要当前浏览器的进程没有结束,Asp.Net SessionID的值就不会改变。

    2.或者服务器端SessionID过期

    3.特别说明,在Asp.Net 应用中需要HttpAppliaction的Session_Start、Session_End 方法才会启用Session状态,否则每次请求的Session状态自动过期,也就是下一次请求都是新的。

    4.不同进程的Asp.Net SessionID是不相同的,也就是不同域名的SessionID不相同,如下:

    更多:

    Asp.Net HttpApplication请求管道与Session(一)

    Asp.Net HttpApplication 事件汇总

    ASP.NET的Application简介1

  • 相关阅读:
    实现一个简易版的react
    浅学virtualDom和diff算法
    148. 排序链表 归并排序 | 快速排序
    OC中的NSDictionary和NSMutableDictionary
    OC中的block
    OC中的category&Extension
    OC中判断方法是否实现
    OC的分组导航标记
    OC中程序的内存分布&类加载
    OC中的@property和@synthesize
  • 原文地址:https://www.cnblogs.com/tianma3798/p/4977593.html
Copyright © 2020-2023  润新知