采用HttpModules来重写URLS
? 首先寫一個處理URLs重寫的類,并且這個類必須繼承IHttpHandler接口,以博客園的程序為例:
? UrlReWriteModule類就是處理URLs重寫的類,繼承IHttpHandler接口,實現該接口的兩個方法,Init和Dispose。在Init方法里注冊自己定義的方法,如上例所示:
? content.BeginRequest +=new EventHandler(content_BeginRequest);
? BeginRequest是一個事件,在收到新的Http請求時觸發,content_BeginRequest就是觸發時處理的方法。另外說明一點,HttpModules能注冊的方法還有很多,如:EndRequest、Error、Disposed、PreSendRequestContent等等。
? 在content_BeginRequest方法中具體處理URLs重寫的細節,比如,將 http://www.cnblogs.com/archive.aspx?user=rrooyy&id=56041 重寫為 http://www.cnblogs.com/rrooyy/archive/2004/10/24/56041.。然后將重新生成的Url用HttpContext.RewritePath()方法重寫即可,如下:
? 最后要web.config中注冊重寫URLs的類,格式如下:
<HTTPMODULES> <ADD type="classname,assemblyname" name="modulename"/> <REMOVE name="modulename"/> <CLEAR /> </HTTPMODULES>
----
在 Web 應用程序中添加模塊。
配置結構的示例:
<configuration>
???<system.web>
??????<httpModules>
?????????<add>
語法
<add name="ModuleName"
????type=".NET Class, Assembly [,Version=version number]
????[,Culture=culture] [,PublicKeyToken=token]"/>
必需的屬性
| name | 給模塊提供好記的名稱。這可以使您將 Global.asax 文件中的模塊事件與事件處理程序相關聯。 |
| type | 指定逗號分隔的類/程序集組合,它由版本號、區域性和公鑰標記組成。ASP.NET 首先在應用程序的專用 \Bin 目錄中搜索程序集 DLL,然后在系統程序集緩存中搜索。 |
注釋
<add> 指令按照從上到下的順序進行處理。如果兩個或多個 <add> 子標記指定相同的 verb/path 組合,則最后一個 <add> 覆蓋所有其他子標記。
示例
下例在應用程序中添加模塊。
<configuration> <system.web> <httpModules> <add name="OutputCache" type="System.Web.Caching.OutputCacheModule, System.Web, Version=1.0.2800.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> </httpModules> <system.web> </configuration>要求
- 包含在:<system.web> 中
- Web 平臺:Internet 信息服務 (IIS)?5.0
- 配置文件:Machine.config、Web.config
- 配置節處理程序:System.Web.Configuration.HttpModulesConfigurationHandler
?
轉載于:https://www.cnblogs.com/0515offer/p/4482526.html
總結
以上是生活随笔為你收集整理的采用HttpModules来重写URLS的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 问题总结2015/05/05
- 下一篇: SqlHelper模板