• [转贴]Application事件详述!


    1. Application_Start,Application_End,Session_Start,Session_End这四个事件就不用多说了,想必大家都有所了解.
    2. Application_Error:
    当在web应用程序中有未经处理的错误,这个事件就会引发.该事件有着强大的功能,可以捕获整个应用程序中的所有未处理的 异常,这时你可以把这些异常信息存储在一个log文件中,以便跟踪管理,很方便.
    3. Application_OnBeginRequest:
    asp.net应用程序的每个请求都会引发该事件,它发生在页面,web服务和其他任何http处理程序请求之前.它也不同于application_Start事件,后者只在启动应用程序时引发一次.
    4. Application_OnAuthenticateRequest: 该事件发生在asp.net准备对请求执行认证时.该事件很容易为asp.net建立自定义的身份验证系统.
    5. Application_OnAuthorizeRequest: 该事件发生在asp.net准备授权一个请求资源的访问权限时.
    6. Application_OnResolveRequestCache: asp.net 有一个强大的页面和web服务输出高速缓存的功能,页面可以在执行一次后静态的保存起来,以供以后的请求使用.该事件就是在asp.net准备确定是否从 cache中处理请求时触发的.
    7. Application_OnAcquireRequestState: 这个事件是在asp.net准备从进程中及进程外window service 或sql server中获得session状态数据时引发的.
    8. application_OnPreRequestHandleExecute: 这个事件是在请求的处理程序调用之前引发的.
    9. Application_OnPostRequestHandleExecute: 这个事件是在处理程序完成了对请求的处理之后引发的.这之后Response对象把数据送回客户端.
    10. Applicaiton_OnReleaseRequestState: 用来释放session数据并在必要时更新存储器的.
    11. Applicaiton_OnUpdateRequestCache: 这个事件是在asp.net用当前请求更新告诉缓存时发生的.
    12. Application_OnEndRequest: 这是请求完成所引发的最后一个事件.
    13. Application_OnPreSendRequestsHeaders: 在http标题发送到请求的客户端之前发生的.
    14.Application_OnPreSendRequestContent: 是在Http主体发送到请求的客户端之前发生的.
    15. Applicaton_OnDisposed: 这一事件是在asp.net应用程序最终关闭,而且clr从内存中删除了asp.net应用程序时引发的.

    以上这些事件其实并不一定都会用到,但很多事件还是很有用的.
    举个例子,像Application_OnBeginRequest事件,它触发在每个用户请求发送时,利用这一事件我们可以轻松的加入一个计数器,用来计算服务器在一段时间内,回应了多少个用户请求.
    而application_OnEndRequest 事件则发生在所有请求完毕所有,即将将数据输出给用户,我们可以利用这一事件来加入一些对每个页面都需要加入的东东.比如: this site is powered by asp.net等等之类的信息,这样,无论用户请求该站点下的哪个页面,都将在页面底部显示出this site is powered by asp.net的字样.

    另外一个很重要的事件就是application_error事件. 在我们的应用程序中,有时候不可能估计到全部的异常,这样,一旦这样的异常发生,将导致显示黄页,很不友好,而在application_error事件中定义异常则很方便.
    <script language="C#" runat=server>
    protected void Application_Error(Object sender, EventArgs e)
    {
    string LogName="Web_Error";
    string message="";
    message="URL:"+Request.Path+";Error:"+Server.GetLastError().ToString();

    //检查日志是否存在
    if(!EventLog.SourceExists(LogName))
    {
    EventLog.CreateEventSource(LogName,LogName);
    }

    //写入日志
    EventLog log= new EventLog();
    log.Source=LogName;
    log.WriteEntry(message,EventLogEntryType.Error);
    }
    </script>

  • 相关阅读:
    cdoj 841 休生伤杜景死惊开 逆序数/树状数组
    Codeforces Round #296 (Div. 1) B. Clique Problem 贪心
    【NOIP2014】联合权值 树上dp
    【NOIP2014】生活大爆炸版石头剪刀布
    BZOJ 2756: [SCOI2012]奇怪的游戏 网络流/二分
    BZOJ 1012: [JSOI2008]最大数maxnumber 单调队列/线段树/树状数组/乱搞
    BZOJ 1036: [ZJOI2008]树的统计Count 树链剖分
    BZOJ 1854: [Scoi2010]游戏 并查集
    BZOJ 1008 [HNOI2008]越狱 排列组合
    BZOJ 1003 物流运输trans dijstra+dp
  • 原文地址:https://www.cnblogs.com/goody9807/p/226163.html
Copyright © 2020-2023  润新知