1. 程式人生 > >ASP.NET MVC中的Global.asax檔案

ASP.NET MVC中的Global.asax檔案

1.global.asax檔案概述 

global.asax這個檔案包含全域性應用程式事件的事件處理程式。它響應應用程式級別和會話級別事件的程式碼。  
執行時, Global.asax 將被編譯成一個動態生成的 .NET Framework 類,該類是從HttpApplication基類派生的。
因此在global.asax中的程式碼可以訪問HttpApplication類中所有的public或者protected的成員
global.asax不被使用者直接請求,但global.asax中的程式碼會被自動執行來響應特定的應用程式事件。
global.asax是可選的,而且在一個web專案中是唯一的,它應該處於網站的根目錄。

2.一個請求的完整處理過程

以下過程由Internet Information Service(inetinfo.exe)(IIS)執行
1.客戶端發出請求
2.驗證請求
3.給請求授權
4.確定請求的快取
5.獲取快取狀態
6.在請求的處理程式執行前
7.http處理程式執行請求 (asp.net頁面由aspnet_wp.exe執行)
8.在請求的處理程式執行後
9.釋放請求狀態
10.更新請求快取
11.請求結束

3.global.asax中的事件

global.asax中的所有事件可以分成兩種,一種是滿足特定事件時才會被觸發,一種是每次請求都會被按照順序執行的事件。

 public class
MvcApplication : System.Web.HttpApplication { protected void Application_Start(object sender, EventArgs e) { //不是每次請求都呼叫 //在Web應用程式的生命週期裡就執行一次 //在應用程式第一次啟動和應用程式域建立事被呼叫 //適合處理應用程式範圍的初始化程式碼 } void Application_End(object
sender, EventArgs e) { //不是每次請求都呼叫 //在應用程式關閉時執行的程式碼,在最後一個HttpApplication銷燬之後執行 //比如IIS重啟,檔案更新,程序回收導致應用程式轉換到另一個應用程式域 } void Session_Start(object sender, EventArgs e) { //不是每次請求都呼叫 //會話開始時執行 } void Session_End(object sender, EventArgs e) { //不是每次請求都呼叫 //會話結束或過期時執行 //不管在程式碼中顯式的清空Session或者Session超時自動過期,此方法都將被呼叫 } void Application_Init(object sender, EventArgs e) { //不是每次請求都呼叫 //在每一個HttpApplication例項初始化的時候執行 } void Application_Disposed(object sender, EventArgs e) { //不是每次請求都呼叫 //在應用程式被關閉一段時間之後,在.net垃圾回收器準備回收它佔用的記憶體的時候被呼叫。 //在每一個HttpApplication例項被銷燬之前執行 } void Application_Error(object sender, EventArgs e) { //不是每次請求都呼叫 //所有沒有處理的錯誤都會導致這個方法的執行 } /*********************************************************************/ //每次請求都會按照順序執行以下事件 /*********************************************************************/ void Application_BeginRequest(object sender, EventArgs e) { //每次請求時第一個出發的事件,這個方法第一個執行 } void Application_AuthenticateRequest(object sender, EventArgs e) { //在執行驗證前發生,這是建立驗證邏輯的起點 } void Application_AuthorizeRequest(object sender, EventArgs e) { //當安全模組已經驗證了當前使用者的授權時執行 } void Application_ResolveRequestCache(object sender, EventArgs e) { //當ASP.NET完成授權事件以使快取模組從快取中為請求提供服務時發生,從而跳過處理程式(頁面或者是WebService)的執行。 //這樣做可以改善網站的效能,這個事件還可以用來判斷正文是不是從Cache中得到的。 } //------------------------------------------------------------------------ //在這個時候,請求將被轉交給合適程式。例如:web窗體將被編譯並完成例項化 //------------------------------------------------------------------------ void Application_AcquireRequestState(object sender, EventArgs e) { //讀取了Session所需的特定資訊並且在把這些資訊填充到Session之前執行 } void Application_PreRequestHandlerExecute(object sender, EventArgs e) { //在合適的處理程式執行請求前呼叫 //這個時候,Session就可以用了 } //------------------------------------------------- //在這個時候,頁面程式碼將會被執行,頁面呈現為HTML //------------------------------------------------- void Application_PostRequestHandlerExecute(object sender, EventArgs e) { //當處理程式完成對請求的處理後被呼叫。 } void Application_ReleaseRequestState(object sender, EventArgs e) { //釋放請求狀態 } void Application_UpdateRequestCache(object sender, EventArgs e) { //為了後續的請求,更新響應快取時被呼叫 } void Application_EndRequest(object sender, EventArgs e) { //EndRequest是在響應Request時最後一個觸發的事件 //但在物件被釋放或者從新建立以前,適合在這個時候清理程式碼 } void Application_PreSendRequestHeaders(object sender, EventArgs e) { //向客戶端傳送Http標頭之前被呼叫 } void Application_PreSendRequestContent(object sender, EventArgs e) { //向客戶端傳送Http正文之前被呼叫 } }

相關推薦

ASP.NET MVCGlobal.asax檔案

1.global.asax檔案概述  global.asax這個檔案包含全域性應用程式事件的事件處理程式。它響應應用程式級別和會話級別事件的程式碼。  執行時, Global.asax 將被編譯成一個動態生成的 .NET Framework 類,該類是從HttpApplication基類派生的。 因此在gl

ASP.NET MVCGlobal.asax文件

stc sta 垃圾回收 tar event toolbar 初始化 requests 網站 1.global.asax文件概述 global.asax這個文件包含全局應用程序事件的事件處理程序。它響應應用程序級別和會話級別事件的代碼。  運行時, Global.asa

Asp.net MVC如何獲取控制器的名稱

tex 如何 route 控制 this .get data control str 如果在代碼中 當前controller、action的獲取RouteData.Route.GetRouteData(this.HttpContext).Values["controlle

asp.net mvchtml helper的一大優勢

ont size color 優勢 其中 系統 per .net strong 剛上手這個框架,發現其中的html helper用起來很方便,讓我們這些從web form 過渡來的coder有一種使用控件的快感,嘻嘻! 言歸正傳,我要說的是在使用它時,系統會自動執行表單的現

淺析Asp.net MVC Ajax的使用

x11 生成 table ex18 review arp javascrip tle func 在ASP.NET MVC beta中我們可以使用Ajax.BeginForm, Ajax.ActionLink來進行Ajax調用,同樣我們也可以使用一些支持Ajax 框架如jQ

ASP.NET MVC 路徑的解惑

src javascrip pan 開頭 失效 如果 語言 baidu rip 很多人在寫代碼的時候關於路徑這個問題很頭疼,其實路徑是很簡單的,只是沒人幫我們點投!初次學習程序的人,我相信肯定會遇到和我一樣的問題,比如說,“/”和“~”引用路勁的區別,接下來看吧,這篇文章肯

Asp.net mvc使用配置Unity

ges mage bsp 使用 cacti .cn 技術 效果展示 onf 第一步:添加unity.mvc 第二步:在添加之後會在app_start中生成UnityConfig.cs,UnityMvcActivator.cs 第三步:使用 第四步:效果展示 Asp

asp.net mvc如何處理字符串與對象之間的序列化與反序列化(一)

osi strong 類結構 plain pbo edate inf esc arp 前臺我們一般用ajax來發送數據到後端進行處理,如果json數據結構和後臺的實體類結構一致,就直接可以反序列化為指定的對象進行操作,非常方便。 前端發送的json數據結構: 後端實體結

ASP.NET MVC利用Aspose.cells 將查詢出的數據導出為excel,並在瀏覽器下載。

width tdi 新增 column 需求 options 解決 印象 ats 正題前的嘮叨 本人是才出來工作不久的小白菜一顆,技術很一般,總是會有遇到一些很簡單的問題卻不知道怎麽做,這些問題可能是之前解決過的。發現這個問題,想著提升一下自己的技術水平,將一些學的新的‘好

log4net 使用總結- (1)在ASP.NET MVC 使用

站點 href 還需 配置文件 str nag org src stat 1. 去官網下載log4net.dll,增加引用到站點下(你也可以通過nuget 安裝) http://logging.apache.org/log4net/download_log4net.cgi

ASP.NET MVC使用Castle Windsor

tac col sta undle 文件中 isp path http start 平常用Inject比較多,今天接觸到了Castle Windsor。本篇就來體驗其在ASP.NET MVC中的應用過程。 Visual Studio 2012創建一個ASP.NET

ASP.NET MVC為DropDownListFor設置選中項的方法

相等 ret info href submit value and number else 在MVC中,當涉及到強類型編輯頁,如果有select元素,需要根據當前Model的某個屬性值,讓Select的某項選中。本篇只整理思路,不涉及完整代碼。 □ 思路 往前臺視圖傳的類型

asp.net mvc 使用單例

客戶端 using led sta .get list() ice 單例 namespace 有這樣一個service,需要運行的asp.net站點上,但要保證這個實例是唯一的。單例用來啟用聊天機器人,保證唯一,以免啟動多個,造成客戶端發送消息的時候,會造成每個機器人都發送

asp.net MVC Session統一驗證的方法

pla sta tails project ssi 一個 str urn string 驗證登錄狀態的方法有:1 進程外Session 2 方法過濾器(建一個類繼承ActionFilterAttribute)然後給需要驗證的方法或控制器加特性標簽 3 :新建一個Ba

ASP.NET MVC使用FluentValidation驗證實體

state route html 程序 app int pre ima add 1、FluentValidation介紹   FluentValidation是與ASP.NET DataAnnotataion Attribute驗證實體不同的數據驗證組件,提供了將實體與驗證

ASP.NET MVC錯誤處理方式

itl com archive href tle http ive hive .html http://www.cnblogs.com/shenba/archive/2011/04/16/2018441.htmlASP.NET MVC中錯誤處理方式

async、await在ASP.NET[ MVC]之線程死鎖的故事

div pos ask 其他 flow ron ttpClient com async 場景重構 public ActionResult Index(string ucode) { string userInfo = G

asp.net -mvc框架復習(5)-ASP.NET MVC的視圖簡單使用

font height logs 認識 知識 分類 ges mil c中 1.視圖分類 ASPX視圖(現在講解) Razor視圖(後面講解) ASPX 視圖: 2.@page指令 作用:頁面的聲明 要求:必須放在第一行,常用指令屬性如下: 3.服務器端內嵌

高性能緩存系統Memcached在ASP.NET MVC應用

index req 緩存系統 help add nts .... ont p s 首先下載windows平臺下的memcached,然後安裝。安裝完之後就是啟動memcached服務了,你可以在cmd下用dos命令輸入,也可以在計算機管理->服務->memcac