[解決済み] IHttpHandlerとIHttpModuleの比較
2023-07-28 15:48:02
疑問点
私の質問は簡単です(ただし、答えはおそらくそうではないでしょう)。 私は、C# / ASP.NET でサーバー側のアップロードハンドラーを実装する方法を決定しようとしています。
私は HttpModules (IHttpModule interface) と HttpHandlers (IHttpHandler interface) の両方を使用したことがあり、どちらのメカニズムでもこれを実装できることを思いつきました。 また、この 2 つの違いを理解していないことも判明しました。
だから私の質問はこれです。 どのような場合に、IHttpModule の代わりに IHttpHandler を使用することを選択するでしょうか (逆も同様)?
パイプラインのより高い位置で実行されますか? 特定の状況で設定するのがずっと簡単なのか? 中程度のセキュリティではうまく機能しないのでしょうか?
どのように解決するのですか?
ASP.NET HTTP ハンドラ は、ASP.NET Web アプリケーションへのリクエストに応答して実行されるプロセス (頻繁に "endpoint" と呼ばれる) です。最も一般的なハンドラは、.aspx ファイルを処理する ASP.NET ページハンドラです。ユーザーが .aspx ファイルをリクエストすると、そのリクエストはページハンドラを通してページによって処理されます。ブラウザにカスタム出力をレンダリングする独自のHTTPハンドラを作成することができます。
カスタム HTTP ハンドラの典型的な用途は次のとおりです。
- RSS フィード Web サイトの RSS フィードを作成するには、RSS フォーマットの XML を発行するハンドラを作成します。そして、.rss などのファイル名拡張子をカスタムハンドラにバインドします。ユーザーがサイトに.rssで終わるリクエストを送信すると、ASP.NETはハンドラを呼び出してリクエストを処理します。
- 画像サーバー Web アプリケーションでさまざまなサイズの画像を提供したい場合、画像のサイズを変更するカスタム ハンドラーを記述し、ハンドラーの応答としてユーザーに画像を送信できます。
HTTP モジュール は、アプリケーションに行われるすべてのリクエストで呼び出されるアセンブリです。HTTPモジュールはASP.NETのリクエストパイプラインの一部として呼び出され、リクエストのライフサイクルイベントにアクセスすることができます。HTTPモジュールにより、受信および送信されるリクエストを調べ、リクエストに基づいたアクションを取ることができます。
HTTP モジュールの典型的な用途は次のとおりです。
- セキュリティ 要求されたページ、XML Web サービス、またはハンドラーが呼び出される前に、HTTP モジュールは受信要求を調べることができるので、カスタム認証や他のセキュリティ チェックを実行できます。統合モードで動作しているインターネット インフォメーション サービス (IIS) 7.0 では、アプリケーション内のすべてのコンテンツ タイプにフォーム認証を拡張できます。
- 統計とログ HTTP モジュールはすべてのリクエストで呼び出されるため、リクエストの統計とログ情報を、個々のページではなく、一元化されたモジュールで収集することができます。
- カスタムヘッダーまたはフッター 送信するレスポンスを変更できるため、カスタムヘッダー情報などのコンテンツをすべてのページまたは XML Web サービスのレスポンスに挿入できます。
関連
-
[解決済み】WebForms UnobtrusiveValidationModeは、jqueryのScriptResourceMappingを必要とする
-
[解決済み] [Entity Framework 4.1でエンティティに関連オブジェクトを追加する際に、エンティティオブジェクトをIEntityChangeTracker.の複数のインスタンスから参照できない。
-
[解決済み] 保護レベルによりアクセス不能になりました。
-
[解決済み】非静的メソッドはターゲットを必要とする
-
[解決済み】Entity FrameworkからのSqlException - セッション内で他のスレッドが動作しているため、新しいトランザクションは許可されません。
-
[解決済み】C#のequal to演算子でtextとvarcharのデータ型は互換性がない
-
[解決済み】Linq 構文 - 複数列の選択
-
[解決済み] ...基礎となる接続は閉じられました。予期しないエラーが受信で発生しました
-
VSでscanfエラーを恒久的に解決するには、ソースファイルを作成し、自動的に#define _CRT_SECURE_NO_WARNINGS 1を追加してください。
-
[解決済み】スレッド終了またはアプリケーションの要求により、I/O操作が中断されました。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】コンパイルエラー「未割り当てのローカル変数を使用しています」が発生したのはなぜですか?
-
[解決済み] 'SubSonic.Schema .DatabaseColumn' 型のオブジェクトをシリアライズする際に、循環参照が検出されました。
-
[解決済み】非静的メソッドはターゲットを必要とする
-
[解決済み】値が期待した範囲に収まらない
-
[解決済み] 'IEnumerable<SelectListItem>' 型の ViewData アイテムで、キーが国であるものは存在しない。
-
[解決済み】Unity 「関連するスクリプトを読み込むことができません」「Win32Exception: システムは指定されたファイルを見つけることができません"
-
[解決済み】「...は'型'であり、与えられたコンテキストでは有効ではありません」を解決するにはどうすればよいですか?(C#)
-
[解決済み】2年前のMSDateを把握する【クローズド
-
[解決済み】エラー「必要なフォーマルパラメータに対応する引数が与えられていない」を解決する?
-
[解決済み】Microsoft.Extensions.LoggingからILoggerを解決することができない