自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

ASP.NET的HTTP模塊和處理程序之對(duì)話狀態(tài)

開發(fā) 后端
為了實(shí)現(xiàn)擴(kuò)充或擴(kuò)展Web服務(wù)器的功能,ASP.NET提供了HttpHandler(HTTP處理程序)和HttpModule(HTTP模塊),這里,筆者將帶各位深入了解這些組件的詳細(xì)信息。這篇文章,筆者將向大家介紹ASP.NET中HTTP處理程序中的對(duì)話狀態(tài)。

  HTTP處理程序中的對(duì)話狀態(tài)

  維護(hù)對(duì)話狀態(tài)是Web應(yīng)用程序執(zhí)行的最通常的事務(wù)。HTTP處理程序也需要訪問這些對(duì)話狀態(tài)。但是HTTP處理程序的默認(rèn)設(shè)置是沒有激活對(duì)話狀態(tài)的。為了讀取和/或?qū)懭霠顟B(tài)數(shù)據(jù),需要HTTP處理程序?qū)崿F(xiàn)下面的接口之一:

  · IRequiresSessionState

  · IReadOnlySessionState.

  當(dāng)HTTP處理程序需要讀寫對(duì)話數(shù)據(jù)的時(shí)候,它必須實(shí)現(xiàn)IRequiresSessionState接口。如果它只讀取對(duì)話數(shù)據(jù),實(shí)現(xiàn)IReadOnlySessionState接口就可以了。

  這兩個(gè)接口都是標(biāo)記接口,并沒有包含任何方法。因此,如果你希望激活NewHandler處理程序的對(duì)話狀態(tài),要像下面的代碼一樣聲明NewHandler類:

  1. public class NewHandler : IHttpHandler, IRequiresSessionState 

  HTTP模塊

  HTTP模塊是實(shí)現(xiàn)了System.Web.IhttpModule接口的.NET組件。這些組件通過在某些事件中注冊(cè)自身,把自己插入ASP.NET請(qǐng)求處理管道。當(dāng)這些事件發(fā)生的時(shí)候,ASP.NET調(diào)用對(duì)請(qǐng)求有興趣的HTTP模塊,這樣該模塊就能處理請(qǐng)求了。

  HTTP模塊實(shí)現(xiàn)了IhttpModule接口的下面一些方法:

方法名稱 描述
Init 這個(gè)方法允許HTTP模塊向HttpApplication 對(duì)象中的事件注冊(cè)自己的事件處理程序。
Dispose 這個(gè)方法給予HTTP模塊在對(duì)象被垃圾收集之前執(zhí)行清理的機(jī)會(huì)。

  HTTP模塊可以向System.Web.HttpApplication對(duì)象暴露的下面一些方法注冊(cè):

事件名稱 描述
AcquireRequestState 當(dāng)ASP.NET運(yùn)行時(shí)準(zhǔn)備好接收當(dāng)前HTTP請(qǐng)求的對(duì)話狀態(tài)的時(shí)候引發(fā)這個(gè)事件。
AuthenticateRequest 當(dāng)ASP.NET 運(yùn)行時(shí)準(zhǔn)備驗(yàn)證用戶身份的時(shí)候引發(fā)這個(gè)事件。
AuthorizeRequest 當(dāng)ASP.NET運(yùn)行時(shí)準(zhǔn)備授權(quán)用戶訪問資源的時(shí)候引發(fā)這個(gè)事件。
BeginRequest 當(dāng)ASP.NET運(yùn)行時(shí)接收到新的HTTP請(qǐng)求的時(shí)候引發(fā)這個(gè)事件。
Disposed 當(dāng)ASP.NET完成HTTP請(qǐng)求的處理過程時(shí)引發(fā)這個(gè)事件。
EndRequest 把響應(yīng)內(nèi)容發(fā)送到客戶端之前引發(fā)這個(gè)事件。
Error 在處理HTTP請(qǐng)求的過程中出現(xiàn)未處理異常的時(shí)候引發(fā)這個(gè)事件。
PostRequestHandlerExecute 在HTTP處理程序結(jié)束執(zhí)行的時(shí)候引發(fā)這個(gè)事件。
PreRequestHandlerExecute 在ASP.NET開始執(zhí)行HTTP請(qǐng)求的處理程序之前引發(fā)這個(gè)事件。在這個(gè)事件之后,ASP.NET 把該請(qǐng)求轉(zhuǎn)發(fā)給適當(dāng)?shù)腍TTP處理程序。
PreSendRequestContent 在ASP.NET把響應(yīng)內(nèi)容發(fā)送到客戶端之前引發(fā)這個(gè)事件。這個(gè)事件允許我們?cè)趦?nèi)容到達(dá)客戶端之前改變響應(yīng)內(nèi)容。我們可以使用這個(gè)事件給頁面輸出添加用于所有頁面的內(nèi)容。例如通用菜單、頭信息或腳信息。
PreSendRequestHeaders 在ASP.NET把HTTP響應(yīng)頭信息發(fā)送給客戶端之前引發(fā)這個(gè)事件。在頭信息到達(dá)客戶端之前,這個(gè)事件允許我們改變它的內(nèi)容。我們可以使用這個(gè)事件在頭信息中添加cookie和自定義數(shù)據(jù)。
ReleaseRequestState 當(dāng)ASP.NET結(jié)束所搜有的請(qǐng)求處理程序執(zhí)行的時(shí)候引發(fā)這個(gè)事件。
ResolveRequestCache 我們引發(fā)這個(gè)事件來決定是否可以使用從輸出緩沖返回的內(nèi)容來結(jié)束請(qǐng)求。這依賴于Web應(yīng)用程序的輸出緩沖時(shí)怎樣設(shè)置的。
UpdateRequestCache 當(dāng)ASP.NET完成了當(dāng)前的HTTP請(qǐng)求的處理,并且輸出內(nèi)容已經(jīng)準(zhǔn)備好添加給輸出緩沖的時(shí)候,引發(fā)這個(gè)事件。這依賴于Web應(yīng)用程序的輸出緩沖是如何設(shè)置的。

  除了這些事件之外,我們還可以使用四個(gè)事件。我們可以通過實(shí)現(xiàn)Web應(yīng)用程序的global.asax文件中一些方法來使用這些事件。

  這些事件是:

  · Application_OnStart

  當(dāng)***個(gè)請(qǐng)求到達(dá)Web應(yīng)用程序的時(shí)候引發(fā)這個(gè)事件。

  · Application_OnEnd

  準(zhǔn)備終止應(yīng)用程序之前引發(fā)這個(gè)事件。

  · Session_OnStart

  用戶對(duì)話的***個(gè)請(qǐng)求引發(fā)這個(gè)事件。

  · Session_OnEnd

  放棄對(duì)話或者對(duì)話超期的時(shí)候引發(fā)這個(gè)事件。

【編輯推薦】

  1. ASP.NET的HTTP模塊和處理程序
  2. ASP.NET的HTTP模塊和處理程序之請(qǐng)求的處理過程
  3. ASP.NET的HTTP模塊和處理程序之處理程序的執(zhí)行
  4. ASP.NET的HTTP模塊和處理程序之HTTP模塊的注冊(cè)和使用
  5. ASP.NET的HTTP模塊和處理程序之模塊實(shí)現(xiàn)
責(zé)任編輯:韓亞珊 來源: 天極網(wǎng)
相關(guān)推薦

2011-04-13 16:59:41

HTTPASP.NET

2011-04-13 15:18:10

.htmHTTP請(qǐng)求處理

2011-04-13 16:49:26

HTTPASP.NET

2011-04-13 16:27:48

HTTPASP.NET

2011-04-13 15:50:49

.htmHTTP請(qǐng)求處理

2009-07-27 13:25:15

Postback程序處ASP.NET

2009-08-03 11:21:47

ASP.NET編程模型

2009-07-28 17:17:19

ASP.NET概述

2023-07-04 08:26:15

2009-07-23 16:20:48

HTTP協(xié)議ASP.NET

2009-07-24 10:41:00

ASP.NET Ses

2009-07-20 17:21:43

Session狀態(tài)ASP.NET

2009-08-10 16:50:34

ASP.NET安裝部署

2009-07-28 16:03:23

ASP.NET狀態(tài)服務(wù)

2009-07-28 11:09:02

ASP.NET狀態(tài)類型

2009-07-27 12:22:03

ASP.NET和ASPASP.NET入門教程

2009-07-29 16:08:07

ASP和ASP.NET

2009-07-29 10:52:09

數(shù)據(jù)采集程序ASP.NET技巧

2009-08-03 13:38:18

ASP.NET編程模型

2009-07-20 16:23:01

ASP.NET授權(quán)模塊
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)