HttpModulesでURLSを書き換える

6113 ワード

まず、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インタフェースを継承し,そのインタフェースを実現する2つの方法,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>          
構文

必須属性


ツールバーの
説明
name
モジュールに覚えやすい名前を指定します.これによりGlobalをasaxファイル内のモジュールイベントはイベントハンドラに関連付けられています.
type
バージョン番号、地域性、公開鍵タグからなるカンマで区切られたクラス/プログラムセットの組合せを指定します.ASP.NETは、まずアプリケーションの専用BinディレクトリでプログラムセットDLLを検索し、システムプログラムセットキャッシュで検索します.

コメント


コマンドは、上から下への順に処理されます.2つ以上のサブタグが同じverb/pathの組合せを指定する場合、最後のは他のすべてのサブタグを上書きします.


次の例では、アプリケーションにモジュールを追加します.
<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プラットフォーム:インターネット情報サービス(IIS)5.0
  • プロファイル:Machine.config、Web.config
  • コンフィギュレーションセクションハンドラ:System.Web.Configuration.HttpModulesConfigurationHandler

  •