CH10模塊和處理程序._第1頁
CH10模塊和處理程序._第2頁
CH10模塊和處理程序._第3頁
CH10模塊和處理程序._第4頁
CH10模塊和處理程序._第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第十章 模塊和處理程序 回顧 用戶控件的作用是什么? 用戶控件和Web窗體有什么區(qū)別? 在用戶控件中使用事件的步驟是什么? 如何動態(tài)加載用戶控件? 本章目標 了解模塊和處理程序 掌握模塊的制作和使用 熟練掌握處理程序的制作和使用 HttpModule和HttpHandler HttpHandler 處理程序處理程序 Http運行時運行時 Http模塊模塊 Http模塊模塊 Http模塊模塊 Http請求請求 響應(yīng)響應(yīng) 請求的終點請求的終點 最終的處理最終的處理 可能經(jīng)歷多個模塊,可能經(jīng)歷多個模塊, 層次層次“過濾過濾” 原路返回原路返回 IIS6.0 IIS7.0 HttpModule pub

2、lic class MyModule : IHttpModule public void Dispose() /此處放置清除代碼。 public void Init(HttpApplication context) / 下面是如何處理 LogRequest 事件并為其 / 提供自定義日志記錄實現(xiàn)的示例 訪問當前的 HttpApplication環(huán)境 HttpApplication事件 事件說明 AcquireRequestState準備獲得當前HTTP請求的會話狀態(tài)時觸發(fā) AuthenticateRequest準備驗證用戶身份時觸發(fā) AuthorizeRequest準備給用戶授予資源的訪問權(quán)限

3、時觸發(fā) BeginRequestBeginRequest收到一個新的收到一個新的HTTPHTTP請求時觸發(fā)請求時觸發(fā) Disposed完成HTTP請求時觸發(fā) EndRequestEndRequest在把響應(yīng)內(nèi)容發(fā)送給客戶端之前觸發(fā)在把響應(yīng)內(nèi)容發(fā)送給客戶端之前觸發(fā) Error在處理HTTP請求時發(fā)生未處理的異常時觸發(fā) PostRequestHandlerExecute在HTTP處理程序執(zhí)行完畢后觸發(fā) PreRequestHandlerExecute 在開始執(zhí)行HTTP請求的處理程序之前觸發(fā)。在這個事件之后, ASP.NET會把請求發(fā)送給合適的HTTP處理程序 PreSendRequestCont

4、ent 在把響應(yīng)內(nèi)容發(fā)送給客戶端之前觸發(fā)。這個事件可以修改響應(yīng)內(nèi)容, 之后把它發(fā)送給客戶端??梢允褂眠@個事件給頁面輸出添加所有頁 面中都有的公共內(nèi)容。 PreSendRequestHeaders 在把HTTP響應(yīng)報頭發(fā)送給客戶端之前觸發(fā)。這個事件可以修改報頭, 之后把它發(fā)送給客戶端。可以使用這個事件給報頭添加cookie金額 定制數(shù)據(jù) 自定義HttpModule 自定義HttpModule 編寫自定義HttpModule類 配置應(yīng)用程序 public class MyModule : IHttpModule private HttpApplication app = null; public

5、void Init(HttpApplication context) app = context; app.EndRequest +=new EventHandler(app_EndRequest); protected void app_EndRequest(object sender, EventArgs e) app.Context.Response.Write(信息來自MyModule,時間: + DateTime.Now.ToLongDateString() + : + DateTime.Now.ToLongTimeString(); HttpHandler 位于請求處理管道的末尾

6、是整個請求處理的終點 通常使用標準的ASP.NET頁面提供的內(nèi)容以減少系 統(tǒng)開銷 典型的應(yīng)用就是根據(jù)動態(tài)查詢字符串的數(shù)據(jù)來處理 圖像 一般處理程序 public class MyHandler : IHttpHandler public void ProcessRequest(HttpContext context) context.Response.ContentType = text/plain; context.Response.Write(Hello World); public bool IsReusable get return false; 繼承IHttpHandler接口 實現(xiàn)

7、ProcessRequest方法 實現(xiàn)IsReusable屬性 修改修改ContentType報頭的值報頭的值 可以通過可以通過HttpHandler返回不同類型的響應(yīng)結(jié)果返回不同類型的響應(yīng)結(jié)果 指定Handler方法 思路分析 獲得URL傳的參數(shù)并查找相對應(yīng)的封面圖片 將水印“粘貼”在封面圖片的左上角 修改程序的輸出類型,并將組合出的新圖片輸出 修改頁面中訪問該圖片的路徑。 string path = context.Server.MapPath(Image + context.Request.Paramsid + .jpg); Image img = Image.FromFile(path

8、); Graphics g = Graphics.FromImage(img); SolidBrush brush = new SolidBrush(Color.Blue); g.DrawString(南方影視網(wǎng), new Font(宋體, 12f), brush, 30, 30); context.Response.ContentType = image/jpeg; img.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpe g); context.Response.End(); a href= target=_blank 總結(jié) 了

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論