HTTP Handler => ASP.NET Page => Http Module這樣一個過程"/>

国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - 驗證一個ASP.NET應用程序和頁面的生命周期的實現代碼

驗證一個ASP.NET應用程序和頁面的生命周期的實現代碼

2019-09-30 15:33asp.net代碼網 ASP.NET教程

我們知道ASP.NET Page的生命周期實際上是ASP.NET Application的生命周期的一部分。這個周期經歷了HTTP Module => HTTP Handler => ASP.NET Page => Http Module這樣一個過程

如果我們能更好地掌握這樣一個過程,那么對單個ASP.NET Page的生命周期也能更好地了解: 
下面介紹如何編寫一個簡單的ASP.NET 頁面和一個簡單的HttpModule,對MSDN里提到的ASP.NET的生命周期進行驗證 
1. 首先使用Visual Studio 2010建立一個空的ASP.NET網站 (ASP.NET 4.0) 
2. 添加一個Default.aspx,添加三個ASP.NET控件,分別為TextBox,Button和Validator: 

復制代碼代碼如下:

   
<form id="form1" runat="server"> 
<div> 
<asp:TextBox ID="txtName" runat="server"></asp:TextBox> 
<asp:Button ID="btnSubmit" runat="server" Text="OK" onclick="btnSubmit_Click" /> 
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="Please input your name!" ControlToValidate="txtName" ForeColor="#FF3300"> 
</asp:RequiredFieldValidator> 
</div> 
</form> 


3. 添加一個ASP.NEt的App_code文件夾,新建一個類,內容為: 

復制代碼代碼如下:


using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
public class TestClass : IHttpModule 

HttpApplication httpApp; 
public static List<string> EventList = new List<string>(); 
public TestClass() 


public void Dispose() 
{ } 
public void Init(HttpApplication context) 

this.httpApp = context; 
//EventList.Clear(); 
EventList.Add("Initiated"); 
context.BeginRequest += new EventHandler(context_BeginRequest); 
context.AuthenticateRequest += new EventHandler(context_AuthenticateRequest); 
context.AuthorizeRequest += new EventHandler(context_AuthorizeRequest); 
context.ResolveRequestCache += new EventHandler(context_ResolveRequestCache); 
context.AcquireRequestState += new EventHandler(context_AcquireRequestState); 
context.PreRequestHandlerExecute += new EventHandler(context_PreRequestHandlerExecute); 
context.PostReleaseRequestState += new EventHandler(context_PostReleaseRequestState); 
context.ReleaseRequestState += new EventHandler(context_ReleaseRequestState); 
context.UpdateRequestCache += new EventHandler(context_UpdateRequestCache); 
context.EndRequest += new EventHandler(context_EndRequest); 

private void context_EndRequest(object sender, EventArgs e) 

EventList.Add("HTTP Modules: End Request <hr>"); 
foreach (string str in EventList) 

httpApp.Response.Write(str + "<br>"); 

EventList.Clear(); 

void context_UpdateRequestCache(object sender, EventArgs e) 

EventList.Add("HTTP Modules: Update Request Cache"); 

void context_ReleaseRequestState(object sender, EventArgs e) 

EventList.Add("HTTP Modules: Release Request State"); 

void context_PostReleaseRequestState(object sender, EventArgs e) 

EventList.Add("HTTP Modules: Post Release Request State"); 

void context_PreRequestHandlerExecute(object sender, EventArgs e) 

EventList.Add("HTTP Modules: Pre Request Handler Execution"); 

void context_AcquireRequestState(object sender, EventArgs e) 

EventList.Add("HTTP Modules: Acquire Request State"); 

void context_ResolveRequestCache(object sender, EventArgs e) 

EventList.Add("HTTP Modules: Resolve Request"); 

void context_AuthorizeRequest(object sender, EventArgs e) 

EventList.Add("HTTP Modules: Authorize Request"); 

void context_AuthenticateRequest(object sender, EventArgs e) 

EventList.Add("HTTP Modules: AuthenticateRequest"); 

void context_BeginRequest(object sender, EventArgs e) 

EventList.Add("HTTP Modules: Begin Request"); 


4. 修改剛才的Default.aspx的后臺cs代碼: 

復制代碼代碼如下:


using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
public partial class _Default : System.Web.UI.Page 

protected void Page_Init() 

TestClass.EventList.Add("ASP.NET Page: Page_Init"); 

protected void Page_Load(object sender, EventArgs e) 

TestClass.EventList.Add("ASP.NET Page: Page_Load"); 

public override void Validate() 

TestClass.EventList.Add("ASP.NET Page: Validated"); 
base.Validate(); 

protected void btnSubmit_Click(object sender, EventArgs e) 

TestClass.EventList.Add("ASP.NET Page: Event"); 

protected override void Render(HtmlTextWriter writer) 

TestClass.EventList.Add("ASP.NET Page: Render"); 
base.Render(writer); 

protected void Page_Unload(object sender, EventArgs e) 

TestClass.EventList.Add("ASP.NET Page: Unload"); 


5. 修改web.config內容如下: 

復制代碼代碼如下:


<configuration> 
<system.web> 
<compilation debug="true" targetFramework="4.0"/> 
</system.web> 
<system.web> 
<httpModules> 
<add name="TestClass" type="TestClass"/> 
</httpModules> 
</system.web> 
</configuration> 


6. Ctrl+F5執行,在瀏覽器里可以看到:
驗證一個ASP.NET應用程序和頁面的生命周期的實現代碼

7. 在文本框內輸入內容,可得:

 驗證一個ASP.NET應用程序和頁面的生命周期的實現代碼
結論: 
1. Module只初始化了一次,當頁面postback的時候,module不會再初始化。 
2. Validate和Event事件在頁面第一次初始化的時候不會觸發,但是由于頁面本身存在validate控件和事件按鈕,所以這兩個事件在第二次會被觸發。 
本文參考了codeproject.com的如下一篇文章http://www.codeproject.com/KB/aspnet/ASPDOTNETPageLifecycle.aspx

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 激情国产 | 欧美影| 久久久久久久久久久美女 | 国产精品久久久久久中文字 | 中文字幕在线第一页 | 91精品国产综合久久久久久漫画 | 先锋av资源在线 | 国内精品一区二区三区视频 | 亚洲精品久久久久一区二区三区 | 在线国产视频观看 | 免费黄色在线 | 国产玖玖视频 | 中文字幕一区二区三区乱码在线 | 久久精品久久久久久 | 91久久精品日日躁夜夜躁国产 | 一区二区三区视频免费 | 色婷婷精品久久二区二区蜜臂av | 精品在线一区二区三区 | 日韩在线视频资源 | 亚洲国产精品久久久久婷婷老年 | 欧美激情久久久 | 日韩av免费在线观看 | 日本久久免费 | jizzzz中国 | 91在线看| 久久久久久免费毛片精品 | 成人精品 | 日韩精品在线观 | 午夜激情免费看 | 免费成人高清在线视频 | 亚洲一区二区在线播放 | 日本久久精品视频 | 中文在线一区二区 | 国产精品区一区二区三区 | 亚洲高清在线视频 | 亚洲成人久久久久 | 福利视频网站 | 中文字幕电影在线 | 成人中文字幕在线观看 | 欧美成年网站 | 国产成人精品免费视频大全最热 |