程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET實現偽靜態的辦法:使用IHttpModule實現

ASP.NET實現偽靜態的辦法:使用IHttpModule實現

編輯:關於ASP.NET

在ASP.NET中,有很多種實現偽靜態的辦法,我們今天主要介紹通過IHttpModule這個接口的實現,來解決問題。

相對於整個應用程序來講,如果我們需要在請求發生之時對請求的地址進行處理就需要用到IHttpModule接口。常用實現偽靜態技術。就是將一個Get訪問的查詢字符串變成一個獨立的文件。但是在程序中實際上訪問的還是查詢字符串中的值。如:

Http://www.cnsaiko.com/news.aspx?id=1

改變為

Http://www. cnsaiko.com/news_1.aspx

這樣做的好處在於有利於SEO及防止SQL注入等。當然,文件的擴展名在服務器支持的情況下也是可以變化的。

IHttpModule接口中有兩個方法供我們實現:

Dispose() 處置由實現 IHttpModule 的模塊使用的資源(內存除外)。

Init() 初始化模塊,並使其為處理請求做好准備。

第一步:如果要在應用程序中使用IHttpModule ,則需要配制web.config文件。

在Web.config文件中,我們需要對httpModules元素進行投置,該節點在system.web元素中。如下:

<httpModules>

       <add name="HttpModule" type="WebApplication1.HttpModule"/>

</httpModules>

注意:其中type,必須為實現了IHttpModule接口的類型的俱體路徑(包括命名空間)。

第二步:實現IHttpModule

新建一個HttpModule類,與配制文件中的類型命名空間路徑相同。

使用該類實現IHttpModule接口。

我們開始的代碼將寫在Init方法中,該方法中的HttpApplication對象context包括程用程序對象的所有方法,屬性和事件。那麼在這個對象中,我們就可以開始一個請求事件的處理。

在Init方法中可以書寫:

context.BeginRequest += new EventHandler(context_BeginRequest);

以上代碼,為請求開始事件注冊了一個委托方法。

在注冊委托方法時,可以在寫完+=後,連續按兩次Tab鍵,會自動生成context_BeginRequest方法。

第三步:關於context_BeginRequest()方法

在context_BeginRequest方法中,我們可根據請求的不同,進行請求的重新定向。這樣就可以將虛擬的偽靜態路徑變成我們程序所需要的Get方式查詢字符串。

要想改變請求,就必須得到當前求請,在ASP.NET中,使用HttpContext類型來封裝所有請求對象。那麼,我們可以通過剛剛的HttpApplication對象來獲取HttpContext對象。如:

HttpApplication application = sender as HttpApplication;

HttpContext context = application.Context;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved