2012-07-16 6 views

答えて

22
  1. フィルタは、より多くのMVCのアプローチを行うのに対し、HTTPモジュールはASP.NETのやり方のほうが多いです。両方とも、処理piplineにフックを設けることによって同様の目的を果たします。

  2. HttpModuleは、より一般的なものであり、すべての要求に対して処理されるものが必要な場合に使用します。フィルタは、アクション固有の動作を追加するのに便利です。

  3. HTTPリクエストごとに一度だけ実行されるものが必要な場合は、HttpModuleを使用する必要があります。 ActionFilterは、IsChildActionOnをチェックしない限り、リクエスト中に何度も実行されることがあります。

1

HttpModuleを IISはデフォルトの動作を無効にしたり、のHttpApplicationイベントにイベントハンドラをアタッチさせることにより、カスタム・ロジックを追加するためのWebアプリケーションを可能にする方法です。 IISモード(IntegratedまたはClassic)が異なる場合でも、Web.configの設定が異なります。
参考:
http://msdn.microsoft.com/en-us/library/ms227673(v=vs.100).aspx

例:WWWのURL

public void Init(HttpApplication application) 
{ 
    application.PreRequestHandlerExecute += this.Application_PreRequestHandlerExecute; 
} 

private void Application_PreRequestHandlerExecute(object sender, EventArgs e) 
{ 
    Uri requestUrl = HttpContext.Current.Request.Url; 
    string host = requestUrl.Authority.ToLower(); 
    if (!host.StartsWith("www")) 
    { 
     HttpContext.Current.Response.Redirect(requestUrl.Scheme + "://www." + host + requestUrl.PathAndQuery); 
     HttpContext.Current.Response.End(); 
    } 
} 

アクションフィルタに非WWWをリダイレクトするには、コントローラやアクションメソッドを飾る属性です。これは、MVCルーティングとアクションメソッドの間の抽象レイヤーです。アクションフィルタを使用すると、同じロジックを複数のコントローラまたはアクションメソッドに適用できます。たとえば、カスタムロギング。

2

リクエストハンドラの実行前後でHttpModuleが呼び出されます。開発者が各要求を傍受、参加、または変更できるようにするためのものです。購読可能な22の利用可能なイベントがあり、これによりモジュールはプロセスのさまざまな段階でリクエストを処理できます。このイベントは、キー要求パイプラインイベントが発生したときにコードを実行するページ開発者にとって便利です。また、カスタムモジュールを開発していて、パイプラインへのすべての要求に対してモジュールを呼び出す場合にも便利です。

フィルタは、MVCリクエストのライフサイクルの間にロジックを注入するように設計されています。具体的には、アクションが実行される前後、および結果が処理される前後に呼び出されます。フィルタは、MVCプロジェクト内で行われているいくつかのことを検査、分析、キャプチャ、計測する強力な方法をユーザに提供します。

  • 認証
  • 認証
  • アクション
  • 結果
  • 例外ですから、または、傍受参加したい場合は

:MVC5のとおり、フィルタの5種類があります22 events in the http request pipelineの特定の部分を変更してのモジュールを選択してください。OnActionExecutted

  • OnActionExecuting
をOnResultExecuted
  • OnResultExecuting
  • :あなたのロジックは厳しく、あなたがより良いサーバー以下ActionFilterAttributeの方法のいずれかのオーバーライドアクションメソッドに関連している場合
  • 関連する問題