zoukankan      html  css  js  c++  java
  • Global全局应用程序类

    这个文件名一定不能改!!!

    放在文件根目录下!

    web应用程序第一次启动时调用该方法,只执行一次,后续用户的请求都不会执行这个方法,

    网站 web应用程序的入口 ,不是.net entif..w 入口 ,相当于winform Main函数,这个winform程序的入口

    完成整个web应用程序配置

    Application_BeginRequest 代表请求管道的第一个事件

    如果想注册第2个事件,在Application_BeginRequest方法下写一个方法 (注意签名,命名规范)

    重点方法

     1    /// <summary>
     2         /// 全局的异常处理点.捕获异常信息
     3         /// (如果其他页面出错,都会跳到这个页面)
     4         /// 若页面方法中有try catch 它就不跳到这个方法了
     5         /// </summary>
     6         /// <param name="sender"></param>
     7         /// <param name="e"></param>
     8         protected void Application_Error(object sender, EventArgs e)
     9         {
    10             //捕获异常信息 返回一个异常对象
    11            Exception ex =HttpContext.Current.Server.GetLastError();
    12             //日志一般用开源组件记录 //Log4Net 开源组件
    13          //   ex.Message
    14         }
    全局的异常处理点.捕获异常信息

    不允许多人同时处理一个文件,所以就需要一把"锁",但是这样性能会变差,因为一个用户写数据,其他人只能干等,这是"队列"就出来了

    往"队列"写数据,先把你的数据放在内存里,你就可以做饭去了

    队列是对内存的操作,特点:速度快

    操作系统提供概念: 生产者消费者模式 来解决高并发,队列解决

    使用管道事件注册一个方法或使用

    1.自己定义一个类

    2.在global里写

    开源项目

    定时任务框架

     Global类下方法使用

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Web;
     5 using System.Web.Security;
     6 using System.Web.SessionState;
     7 
     8 namespace Web
     9 {
    10     public class Global : System.Web.HttpApplication
    11     {
    12         /// <summary>
    13         /// web应用程序第一次启动时调用该方法,并且该方法只被调用一次
    14         /// 用户把网站部署iis上
    15         /// </summary>
    16         /// <param name="sender"></param>
    17         /// <param name="e"></param>
    18         protected void Application_Start(object sender, EventArgs e)
    19         {
    20 
    21             
    22         }
    23         /// <summary>
    24         /// 开始会话.(用户通过浏览器第一次访问我们网站的页面,这时建立会话,服务器返回这个SessionId给浏览器,但是当该用户
    25         /// 通过浏览器再次访问其他的页面带这SessionId时,该方法不会被执行.
    26         /// 若用户关掉浏览器重新打开,那重新执行该方法
    27         /// )
    28         /// </summary>
    29         /// <param name="sender"></param>
    30         /// <param name="e"></param>
    31         protected void Session_Start(object sender, EventArgs e)
    32         {
    33             //统计页面访问人数
    34             //Application也是一种状态保持机制,放在该对象中的数据是共享的.
    35             //Cache 也是共享的,微软内部实现加锁解锁机制
    36             Application.Lock();
    37             int count = Convert.ToInt32(Application["count"]);
    38             count++;
    39             Application["count"] = count;
    40             Application.UnLock();//必须要加锁解锁
    41         }
    42 
    43         protected void Application_BeginRequest(object sender, EventArgs e)
    44         {
    45 
    46         }
    47 
    48         protected void Application_AuthenticateRequest(object sender, EventArgs e)
    49         {
    50 
    51         }
    52         /// <summary>
    53         /// 全局的异常处理点.捕获异常信息
    54         /// (如果其他页面出错,都会跳到这个页面)
    55         /// 若页面方法中有try catch 它就不跳到这个方法了
    56         /// </summary>
    57         /// <param name="sender"></param>
    58         /// <param name="e"></param>
    59         protected void Application_Error(object sender, EventArgs e)
    60         {
    61             //捕获异常信息 返回一个异常对象
    62            Exception ex =HttpContext.Current.Server.GetLastError();
    63             //日志一般用开源组件记录 //Log4Net 开源组件
    64          //   ex.Message
    65         }
    66         /// <summary>
    67         /// 会话结束,用户关浏览器不会执行,20分钟后这个用户没有对服务器发请求,服务器才执行此方法
    68         /// </summary>
    69         /// <param name="sender"></param>
    70         /// <param name="e"></param>
    71         protected void Session_End(object sender, EventArgs e)
    72         {
    73             Application.Lock();
    74             int count = Convert.ToInt32(Application["count"]);
    75             count--;
    76             Application["count"] = count;
    77             Application.UnLock();//必须要加锁解锁
    78         }
    79         /// <summary>
    80         /// 很多情况这个情况没方法调用
    81         /// </summary>
    82         /// <param name="sender"></param>
    83         /// <param name="e"></param>
    84         protected void Application_End(object sender, EventArgs e)
    85         {
    86 
    87         }
    88     }
    89 }
    Global方法描述
  • 相关阅读:
    [Baltic2013]ballmachine BZOJ3133
    [Jxoi2012]奇怪的道路 BZOJ3195 状压DP
    [Baltic 2011]Lamp BZOJ2346
    可并堆
    [Jsoi2016]最佳团体 BZOJ4753 01分数规划+树形背包/dfs序
    点分治
    J2EE WEB应用架构分析
    {经典}springmvc+mybatis+restful+webservice Jeesz分布式架构
    深入Spring Boot:那些注入不了的 Spring 占位符 ( ${} 表达式 )
    G1 垃圾收集器之对象分配过程
  • 原文地址:https://www.cnblogs.com/ligtcho/p/6629619.html
Copyright © 2011-2022 走看看