熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

采用HttpModules來重寫URLs

2013-11-13 10:29:13  來源: .NET編程 

  首先寫一個處理URLs重寫的類並且這個類必須繼承IHttpHandler接口以博客園的程序為例

    public class UrlReWriteModule : SystemWebIHttpModule
{
public void Init(HttpApplication context)
{
contextBeginRequest +=new EventHandler(context_BeginRequest);
}
public void Dispose()
{
}
}

  UrlReWriteModule類就是處理URLs重寫的類繼承IHttpHandler接口實現該接口的兩個方法Init和Dispose在Init方法裡注冊自己定義的方法如上例所示

  contentBeginRequest +=new EventHandler(content_BeginRequest);

  BeginRequest是一個事件在收到新的Http請求時觸發content_BeginRequest就是觸發時處理的方法另外說明一點HttpModules能注冊的方法還有很多EndRequestErrorDisposedPreSendRequestContent等等

  在content_BeginRequest方法中具體處理URLs重寫的細節比如將 x?user=rrooyy&id= 重寫為 然後將重新生成的Url用HttpContextRewritePath()方法重寫即可如下

    private void context_BeginRequest(object sender EventArgs e)
{
HttpContext context   = ((HttpApplication)sender)Context;
// 獲取舊的Url
     string url = contextRequestPathToLower();
// 重新生成新的Url
     string newUrl = ; // 具體過程略
// 重寫Url
     contextRewritePath(newUrl);
}

  最後要nfig中注冊重寫URLs的類格式如下

    <HTTPMODULES>
<ADD type=classnameassemblyname name=modulename/>
<REMOVE name=modulename/>
<CLEAR />
</HTTPMODULES>


From:http://tw.wingwit.com/Article/program/net/201311/13792.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.