私は、とHTTP handler
をどのように実装するかという質問を、ASP.Net MVC
に尋ねました。私はaspxページが呼び出される前に前処理ロジックを書くためにASP.Netで使われていることを知っています。しかし、ASP.Net MVCにはフィルターがありますので、フィルターを使用しています。私は正解を出しましたか?ASP.Net MVCのHTTPモジュールとHTTPハンドラ?
答えて
アクションフィルタを使用すると、MVC固有のイベントにしかフックできませんが、HTTPモジュールではASP.Netイベントにフックできるので、MVCでもHTTPモジュールとHTTPハンドラを実装するには、対応するインターフェイスを実装する必要があります。 また、Http要求ごとに一度しか機能を実行しないようにするには、HttpModuleを使用する必要があります。 ActionFiltersは、サーバーへの1回のトリップで数回実行できます。 HTTPモジュールとHTTPハンドラについて説明するために、HTTPモジュールとHTTPハンドラは、要求チェーンに前処理ロジックを注入するためにMVCによって使用されます。
HTTPハンドラは拡張子ベースのプリプロセッサですが、HTTPモジュールはイベントベースのプリプロセッサです。たとえば、jpg
ファイルの処理方法を変更する場合は、カスタムHTTPハンドラを実装します。これに対して、リクエストの処理中に追加のロジックを実行する場合は、カスタムHTTPモジュールを実装します。特定のリクエストには常にHTTPハンドラが1つしかありませんが、複数のHTTPモジュールが存在する可能性があります。
HTTPハンドラを実装するには、IHTTPHandler
クラスを実装し、メソッドProcessRequest
とプロパティIsResuable
を実装します。 IsResuable
プロパティは、ハンドラを再利用できるかどうかを決定します。
public class MyJpgHandler: IHttpHandler {
public bool IsReusable {
get {
return false;
}
}
public void ProcessRequest(HttpContext context) {
}
}
我々はweb.config
ファイルに私たちのカスタムハンドラによって処理される要求の種類を指定する必要があります次:HTTPモジュールを実装するには
<httpHandlers>
<add verb="*" path="*.jpg" type="MyJpgHandler"/>
</httpHandlers>
は、我々はIHttpModule
を実装し、必要なイベントを登録する必要がありますinit
の方法で。
public class MyHttpModule: IHttpModule {
public MyHttpModule() {}
public void Init(HttpApplication application) {
application.BeginRequest += new EventHandler(this.context_BeginRequest);
application.EndRequest += new EventHandler(this.context_EndRequest);
}
public void context_BeginRequest(object sender, EventArgs e) {
StreamWriter sw = new StreamWriter(@ "C:\log.txt", true);
sw.WriteLine("request began at " + DateTime.Now.ToString());
sw.Close();
}
public void context_EndRequest(object sender, EventArgs e) {
StreamWriter sw = new StreamWriter(@ "C:\log.txt", true);
sw.WriteLine("Request Ended at " + DateTime.Now.ToString());
sw.Close();
}
public void Dispose() {}
}
そして、我々のモジュールを登録します:我々はすべての要求ログインしたい場合は簡単な例として、
<httpModules>
<add name="MyHttpModule " type="MyHttpModule " />
</httpModules>
- 1. httpハンドラとasp.net mvc
- 2. asp.net-mvcのHTTPモジュールとアクションフィルタ
- 3. ASP.NETでのHTTPモジュールとHTTPハンドラの間の内部遅延
- 4. transfer sitemap.xml ASP.NET MVCのハンドラへのHTTPリクエスト
- 5. カスタムHTTPハンドラIIS7とASP.NET
- 6. httpモジュールのasp.net mvcルーティングテーブルへのアクセス
- 7. asp.net httpハンドラと動的CSS生成
- 8. HTTPハンドラのデバッグ
- 9. ASP.NET HTTPハンドラで動作しないAJAX
- 10. NewRelic、async httpハンドラとAcquireRequestState
- 11. バイパスgolang HTTPハンドラ
- 12. ASP.NET MVCとHTTP 401.0 - 権限が
- 13. HTTPハンドラの問題
- 14. Httphandlersとhttpモジュール
- 15. HTTPモジュールとAjax
- 16. JavaScriptでform.submitがASP.NET MVCアプリケーションでHTTPハンドラをヒットしましたか?
- 17. ウェブAPIとHTTPモジュール
- 18. VS 2012でのHTTPハンドラとjavascriptバンドリング
- 19. DjangoのHttp動詞デコレータ? ASP.NET MVCで
- 20. HTTPエラー404.13のカスタムエラーページASP.NETコアMVC
- 21. HttpモジュールでMVCとWebフォーム要求を区別する方法
- 22. ASP.NET MVCアプリケーション - AWSロードバランサをHttpからHttpにリダイレクト
- 23. 飛行中のホストHTTPハンドラ
- 24. ページメソッドのパフォーマンスと非同期httpハンドラ
- 25. ASP.NET MVC 3:デプロイメント後にHTTPポストパラメータallways null
- 26. ASP.NET MVC 3の特定のコントローラのカスタムHTTPモジュールを有効にする方法
- 27. ASP.NET MVC:OutputCacheとhttpヘッダー
- 28. httpモジュールまたはhttpハンドラを使用してC#でファイルをダウンロードするのを傍受しますか?
- 29. HTTPハンドラ圧縮は上
- 30. 画像処理のためのHttpハンドラ
フィルターのみコントローラによって処理される要求のために呼び出されます。より一般的には、OWINに属していない限り、IHttpHandlerとIHttpModuleを使用する必要があります。その場合は、OWIN Middlewareクラスになります。 – Dai
私はここであなたを得なかった。私はOWINについてよく分かりません –