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

來源:互聯網
上載者:User

在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;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.