1. 程式人生 > >ASP.NET全域性檔案Global.asax用法分析

ASP.NET全域性檔案Global.asax用法分析

一、定義:Global.asax 檔案(也稱為 ASP.NET 應用程式檔案)是一個可選的檔案,該檔案包含響應 ASP.NET 或HTTP模組所引發的應用程式級別和會話級別事件的程式碼。Global.asax 檔案駐留在 ASP.NET 應用程式的根目錄中。執行時,分析 Global.asax 並將其編譯到一個動態生成的 .NET Framework 類,該類是從HttpApplication基類派生的。配置 ASP.NET,以便自動拒絕對 Global.asax 檔案的任何直接的 URL 請求;外部使用者不能下載或檢視其中的程式碼。Global.asax 檔案是可選的,只在希望處理應用程式事件或會話事件時,才應建立它。

二、Global.asax 檔案繼承自HttpApplication 類,它維護一個HttpApplication 物件池,並在需要時將物件池中的物件分配給應用程式。

1、包含的事件

  ·Application_Init:在應用程式被例項化或第一次被呼叫時,該事件被觸發。對於所有的HttpApplication 物件例項,它都會被呼叫。

  ·Application_Disposed:在應用程式被銷燬之前觸發。這是清除以前所用資源的理想位置。

  ·Application_Error:當應用程式中遇到一個未處理的異常時,該事件被觸發。

  ·Application_Start:在HttpApplication 類的第一個例項被建立時,該事件被觸發。它允許你建立可以由所有HttpApplication 例項訪問的物件。 這是在應用程式中給應用程式級的變數賦值或指定對所有使用者必須保持的狀態的理想位置。

  ·Application_End:在HttpApplication 類的最後一個例項被銷燬時,該事件被觸發。在一個應用程式的生命週期內它只被觸發一次。

  ·Application_BeginRequest:在接收到一個應用程式請求時觸發。對於一個請求來說,它是第一個被觸發的事件,請求一般是使用者輸入的一個頁面請求(URL)。

  ·Application_EndRequest:針對應用程式請求的最後一個事件。

  ·Application_PreRequestHandlerExecute:在 ASP.NET 頁面框架開始執行諸如頁面或 Web 服務之類的事件處理程式之前,該事件被觸發。

  ·Application_PostRequestHandlerExecute:在 ASP.NET 頁面框架結束執行一個事件處理程式時,該事件被觸發。

  ·Applcation_PreSendRequestHeaders:在 ASP.NET 頁面框架傳送 HTTP 頭給請求客戶(瀏覽器)時,該事件被觸發。

  ·Application_PreSendContent:在 ASP.NET 頁面框架傳送內容給請求客戶(瀏覽器)時,該事件被觸發。

  ·Application_AcquireRequestState:在 ASP.NET 頁面框架得到與當前請求相關的當前狀態(Session 狀態)時,該事件被觸發。

  ·Application_ReleaseRequestState:在 ASP.NET 頁面框架執行完所有的事件處理程式時,該事件被觸發。這將導致所有的狀態模組儲存它們當前的狀態資料。

  ·Application_ResolveRequestCache:在 ASP.NET 頁面框架完成一個授權請求時,該事件被觸發。它允許快取模組從快取中為請求提供服務,從而繞過事件處理程式的執行。

  ·Application_UpdateRequestCache:在 ASP.NET 頁面框架完成事件處理程式的執行時,該事件被觸發,從而使快取模組儲存響應資料,以供響應後續的請求時使用。

  ·Application_AuthenticateRequest:在安全模組建立起當前使用者的有效的身份時,該事件被觸發。在這個時候,使用者的憑據將會被驗證。

  ·Application_AuthorizeRequest:當安全模組確認一個使用者可以訪問資源之後,該事件被觸發。

  ·Session_Start:在一個新使用者訪問應用程式 Web 站點時,該事件被觸發。

  ·Session_End:在 InProc 模式下執行時,當一個使用者的會話超時、結束或他們離開應用程式 Web 站點時,該事件被觸發。

2、觸發的順序
 
Application_Init 和Application_Start 事件在應用程式第一次啟動時被觸發一次。
Application_Disposed 和 Application_End 事件在應用程式終止時被觸發一次。
基於會話的事件(Session_Start 和 Session_End)只在使用者進入和離開站點時被使用。
其餘的事件則處理應用程式請求,這些事件被觸發的順序是:

  ·Application_BeginRequest

  ·Application_AuthenticateRequest

  ·Application_AuthorizeRequest

  ·Application_ResolveRequestCache

  ·Application_AcquireRequestState

  ·Application_PreRequestHandlerExecute

  ·Application_PreSendRequestHeaders

  ·Application_PreSendRequestContent

  ·Application_PostRequestHandlerExecute

  ·Application_ReleaseRequestState

  ·Application_UpdateRequestCache

  ·Application_EndRequest

三、使用全域性檔案Global.asax時需要注意:
1)只有被設定為”應用程式”的虛擬目錄(而不是普通的虛擬目錄)所屬的global.asax才有效.
2)IIS服務只是windows的一種服務。當IIS服務開啟後第一次訪問網站時(或者資源緊張,應用程式域回收自動重啟時)global.asax才會執行,如果只是重啟IIS是不激發global.asax執行的。

相關推薦

ASP.NET全域性檔案Global.asax用法分析

一、定義:Global.asax 檔案(也稱為 ASP.NET 應用程式檔案)是一個可選的檔案,該檔案包含響應 ASP.NET 或HTTP模組所引發的應用程式級別和會話級別事件的程式碼。Global.asax 檔案駐留在 ASP.NET 應用程式的根目錄中。執行

.Net MVC 裡面的核心檔案Global.asax執行原理分析

這個 Global.asax檔案是MVC裡面的起始檔案,它不同於其它檔案比如,M層,V層和C層。他是一個獨立的可配置的檔案。 因為.Net MVC把前後端完全分離,極度抽象的一個框架。或許導致了很多從WebForm轉過來的不適應。Global檔案就是此類。 它與MVC裡面的篩選器,控

ASP.NET 系統檔案操作和XML配置讀寫

這裡將工作中用到的兩個工具分享一下:(1)、系統檔案操作工具(2)、XML讀寫配置檔案工具。 目錄 檔案操作工具 XML配置檔案讀寫 XML配置檔案讀取示例 檔案操作工具 using System; using System.Collections.Generic;

asp.net MVC 檔案流匯出Excel

1 <form id="FormEsExcel" action="/**/ExportEsExcelData" method="post"> 2 3 </form> <div style="float: right; margin-top: 25p

ASP.NET使用檔案流的方式下載檔案

               //以字元流的形式下載檔案                 string filePath = "D://

ASP.NET實現檔案上傳和下載

###### 本文的開發配置 ###### .NET版本:.NET Framework 4.0 開發環境:Microsoft Visual Studio 2013 瀏覽器:IE、Chrome、FireFox等都行   1、搭建網站結構 建立一個新的目錄

asp.net mvc 微信支付程式碼分析

開發微信應用,微信支付是永遠要面對的。現在的微信支付相對以往已經很穩定,很少出現詭異情況。再加上無數人開發的經驗分享,現在開發微信支付已經沒什麼難度了。 我這次主要是想基於沐雪微信平臺的微商城業務來分析微信支付到底該怎麼做。主要講思路,程式碼也同時會獻上。 一、思考:1、

ASP NET Core檔案上傳與下載 多種上傳方式

                                                                                                    前言前段時間專案上線,實在太忙,最近終於開始可以研究研究ASP.NET Core了.打算寫個系列,但是還沒想好

ASP.NET MVC檔案上傳、檔案拖拽上傳demo

Introduction In this article I am explaiing three ways to upload image from an ASP.NET MVC web application to server and accessing those back to display

asp.net 實現檔案的壓縮和解壓

如果該部落格能給您帶來幫助,請給博主一個評論謝謝!!話不多說下面請看具體的實現步驟。 1.首先在web專案中引用ICSharpCode.SharpZipLib.dll檔案,可在博主的資源中下載。 2.具體的壓縮和解壓方法實現如下(程式碼中有詳細的備註) /// <summar

How and Where Concurrent Asynchronous I/O with ASP.NET Web API 對非同步程式設計分析的非常的好

http://www.tugberkugurlu.com/archive/how-and-where-concurrent-asynchronous-io-with-asp-net-web-api

asp.net cookies最保險的用法

Partial Class _Default Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handle

ASP.NET檔案上傳與下載

檔案下載      ASP.NET依託.net framework類庫,封裝了大量的功能,使得上傳檔案非常簡單,主要有以下三種基本方法。 方法一:用Web控制元件FileUpload,上傳到網站根目錄。 Test.aspx關鍵程式碼: <formid="fo

ASP.NET實現檔案下載

{        string fileName = "CodeShark.zip";//客戶端儲存的檔名    string filePath = Server.MapPath("DownLoad/CodeShark.zip");//路徑    //以字元流的形式下載檔案    FileStream fs 

ASP.NET Core檔案上傳與下載(多種上傳方式)

前言前段時間專案上線,實在太忙,最近終於開始可以研究研究ASP.NET Core了.打算寫個系列

Asp.net下載檔案幾種方式

protected void Button1_Click(object sender, EventArgs e) { /* 微軟為Response物件提供了一個新的方法TransmitFile來解決使用Response.BinaryWrite 下載超過400mb的檔案時導致Aspnet_wp.

ASP.NET實現檔案的上傳和下載

       最近做的一個高校網站中涉及到了上傳和下載檔案的需求(具體需求為:網站公佈的通知,在後臺要能給每個通知新增附件,在前臺要能顯示並下載附件),之前只是學習過關於上傳的 理論知識,這裡實踐了一下下,與大家分享一下成果。        事先說明:這個例子採用的是簡單

asp.net listbox控制元件的用法 (轉)

實現列表框中項的移位 即:向上移位、向下移位 具體的思路為:建立一個ListBox物件,並把要移位的項先暫放在這個物件中。 如果是向上移位,就是把當前選定項的的上一項的值賦給當前選定的項,然後 把剛才新加入的物件的值,再附給當前選定項的前一項。 具體程式碼為: //定義一

關於asp.net mvc JavaScriptResult的一些用法記錄

當前系統要做成多語言,採用微軟的resx資原始檔,因為需要js中也要動態建立某些datagrid列,所以目前的做法是將resx檔案讀取之後拼接成js內容然後返回到前臺進行載入,然後使用其中的語言配置,其中問題如下: 1,獲取js內容的方法之前寫到了APIController

vs .net 2005 的Global.asax 在哪新增

其它瞭解:   Global.asax 檔案,有時候叫做 ASP.NET 應用程式檔案,提供了一種在一箇中心位置響應應用程式級或模組級事件的方法。你可以使用這個檔案實現應用程式安全性以及其它一些任務。下面讓我們詳細看一下如何在應用程式開發工作中使用這個檔案。 概述 Global.asax 位於應用程式根