欧美日韩精品在线,国内精品久久久久久久久,一级毛片恃级毛片直播,清纯唯美亚洲综合欧美色

如何在ASP.NET應(yīng)用程序中初始化(6)_ASP教程

編輯Tag賺U幣
教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!

推薦:程序員看淘寶,如何用Session保存用戶狀態(tài)
網(wǎng)上購(gòu)物已經(jīng)成為現(xiàn)在生活不可缺少的一部分。我們上淘寶只是為了消費(fèi),今天換一個(gè)角度,用程序員的眼光看看淘寶。 如上圖: 情況一:當(dāng)打開(kāi)一些和賬戶有關(guān)的網(wǎng)頁(yè),檢測(cè)用戶沒(méi)有登錄,系統(tǒng)自動(dòng)會(huì)跳轉(zhuǎn)到登錄界面。 情況二:當(dāng)檢測(cè)到已經(jīng)有用戶登錄,頁(yè)面會(huì)自動(dòng)跳轉(zhuǎn)到目的

前面介紹了4種在ASP.NET執(zhí)行初始化的方法,你或許想知道它們到底有哪些區(qū)別呢?

由于它們都能實(shí)現(xiàn)初始化的操作,它們的差別也只有執(zhí)行的時(shí)刻不同而已,我們可以用簡(jiǎn)單的方法區(qū)分它們的調(diào)用位置:看異常的調(diào)用堆棧信息。

AppInitialize方法異常時(shí)的調(diào)用堆棧信息:

如何在ASP.NET應(yīng)用程序中初始化

HttpModule異常時(shí)的調(diào)用堆棧信息:

如何在ASP.NET應(yīng)用程序中初始化

PreApplicationStartMethodAttribute異常時(shí)的調(diào)用堆棧信息:

如何在ASP.NET應(yīng)用程序中初始化

Global.asax的Application_Start事件處理器的調(diào)用方式則不同,ASP.NET采用了反射調(diào)用,當(dāng)異常發(fā)生只保留了內(nèi)部異常,我們看不到調(diào)用堆棧(不信的話,自己去試試)。

沒(méi)關(guān)系,既然ASP.NET不告訴我們調(diào)用堆棧信息,我們自己也可以去取,請(qǐng)看下面的代碼:

  1. void Application_Start()  
  2. {  
  3.     System.Diagnostics.StackTrace stack = new System.Diagnostics.StackTrace();  
  4.     System.IO.File.WriteAllText("h:\\Application_Start_stack.txt", stack.ToString());  
  5. }  

再打開(kāi)文件看一下吧。

如何在ASP.NET應(yīng)用程序中初始化

說(shuō)明:Global.asax的Application_Start事件處理器還有幾種等效的方法:

  1. // 這二個(gè)方法都可以實(shí)現(xiàn)與Application_Start(object sender, EventArgs e)相同的行為。  
  2.  
  3. void Application_OnStart()  
  4. {  
  5. }  
  6.  
  7. void Application_Start()  
  8. {  
  9. }  

根據(jù)以上分析,可以可以得知:

1. AppInitialize和PreApplicationStartMethodAttribute指向的方法被調(diào)用的時(shí)機(jī)發(fā)生在ASP.NET創(chuàng)建宿主環(huán)境時(shí),屬于比較早的時(shí)刻。

2. Application_Start和HttpModule的調(diào)用時(shí)刻要晚一點(diǎn)。

這個(gè)結(jié)論有用嗎?

其實(shí)我也感覺(jué)意義不大,不過(guò)分析它僅僅為了滿足我的求知欲和好奇心而已,你是否也有這樣的好奇心呢?

如果你仍然好奇想知道這4種方法的執(zhí)行時(shí)機(jī)的先后順序,我也能告訴你:

1. PreApplicationStartMethodAttribute指向的方法。

2. App_Code中的appInitialize方法。

3. Application_Start。

4. HttpModule

再補(bǔ)充一點(diǎn):在開(kāi)發(fā)環(huán)境中,當(dāng)我們編譯網(wǎng)站時(shí),PreApplicationStartMethodAttribute指向的方法可能會(huì)被調(diào)用,這處決于類(lèi)庫(kù)的程序集是否發(fā)生了修改。

到底該選擇哪種初始化方法?

今天給大家介紹了4種在ASP.NET中執(zhí)行初始化的方法,或許有些人會(huì)想:到底該選擇哪種初始化方法呢?

的確,方法越多越讓人迷惑。

下面的觀點(diǎn)僅代表我個(gè)人的建議,你也可以根據(jù)自己的喜好來(lái)選擇。

1. 優(yōu)先選擇Application_Start(雖然IIS的經(jīng)典模式下需要多寫(xiě)點(diǎn)代碼),因?yàn)槿魏稳苏页跏蓟a時(shí)都會(huì)想到那里,便于其他人維護(hù)。

2. AppInitialize方法雖然使用簡(jiǎn)單,但它并不適合于WebApplication項(xiàng)目。

3. PreApplicationStartMethodAttribute只支持ASP.NET 4.0以上版本,且尤其適合于類(lèi)庫(kù)的內(nèi)部初始化。

4. 當(dāng)以上方法都不可行時(shí),HttpModule將成為最后的救命稻草,它適合所有ASP.NET版本。

 

分享:ASP.NET七大身份驗(yàn)證方式及解決方案
在B/S系統(tǒng)開(kāi)發(fā)中,經(jīng)常需要使用身份驗(yàn)證。因?yàn)閣eb應(yīng)用程序非常特殊,和傳統(tǒng)的C/S程序不同,默認(rèn)情況下(不采用任何身份驗(yàn)證方式和權(quán)限控制手段),當(dāng)你的程序在互聯(lián)網(wǎng)/局域網(wǎng)上公開(kāi)后,任何人都能夠訪問(wèn)你的web應(yīng)用程序的資源,這樣很難保障應(yīng)用程序安全性。通俗點(diǎn)來(lái)說(shuō):

共6頁(yè)上一頁(yè)123456下一頁(yè)
來(lái)源:模板無(wú)憂//所屬分類(lèi):ASP教程/更新時(shí)間:2015-06-11
相關(guān)ASP教程