以下はクラスの定義です。
using System; using System.Web; using System.Web.SessionState; namespace QTJZ { public class Filters : IHttpModule, IRequiresSessionState { public void Dispose() { } public void Init(HttpApplication application) { application.AcquireRequestState += new EventHandler(application_AcquireRequestState); } public void application_AcquireRequestState(object sender, EventArgs e) { HttpApplication application = sender as HttpApplication; HttpRequest request = application.Request; HttpResponse response = application.Response; string url=request.CurrentExecutionFilePath.Trim('/'); string suffix = request.CurrentExecutionFilePathExtension.Trim('.'); if (!url.Equals("Default.htm") && (suffix == "aspx" || suffix == "htm")) { object sessionObj = application.Context.Session == null ? null : application.Session["useID"]; if (sessionObj==null) { response.Redirect("~/Default.htm"); } } } } }
フィルター効果を実現するには、Filters クラスで IHttpMoeld インターフェイスを実装する必要があります。このインターフェイスを実装するには、Dispose と Init の 2 つのメソッドがあります。 Init のパラメータは HttpApplication 型のインスタンスです。このインスタンスを使用してイベントを登録します。 URL がフィルタリングされたため、AcquireRequestState イベントが登録されます。同様のイベントは次のとおりです
リダイレクト先の URL を取得するにはリクエストの CurrentExecutionFilePath 属性を使用し、リクエストされたファイルのサフィックスを取得するには CurrentExecutionFilePathExtension を使用します。判断に使用されるかどうかは、ニーズによって異なります。ここで行っているのは、リクエスト中にセッションが存在するかどうかを判断することです。存在しない場合は、ログイン ページに戻ります。 Session が使用されるため、ページを開くと例外がスローされます。例外メッセージは「このコンテキストではセッション状態を使用できません。」です。IRequiresSessionState インターフェイスを実装した後は、例外はスローされません。
さらに、構成ファイル Web.config の
<httpModules> <add name="filters" type="QTJZ.Filters"/> </httpModules>
type 属性は、上記の Filters クラスの完全修飾名です
その他の URL フィルタリングASP.NET の実装コードに関する記事については、PHP 中国語 Web サイトに注目してください。