日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

采用HttpModules来重写URLS

發布時間:2023/11/30 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 采用HttpModules来重写URLS 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


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

public class UrlReWriteModule : System.Web.IHttpModule { public void Init(HttpApplication context) { context.BeginRequest +=new EventHandler(context_BeginRequest); } public void Dispose() { } }

? 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()方法重寫即可,如下:

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

? 最后要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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。