C#.NETアプリケーションでのIHttpModuleからマップされた仮想ディレクトリを検出
-
19-09-2019 - |
質問
私は、特定のタスク(承認など)を行うために書いたのIHttpModuleが含まれている.NETのウェブサイトを持っています。しかし、ウェブサイト内、残念ながら私は(例えば、コミュニティ・サーバ・フォーラム、adxstudioのCMSなど)を変更したり、移動することはできませんサードパーティ製のアプリケーションにマップされた仮想ディレクトリの数があります。
私は、要求がこれらの仮想ディレクトリの内容のために作られたときに実行されているから、私のIHttpModuleを防止するための方法を探しています。これは可能でしょうか?
[編集] - 次のように追加
私は、仮想ディレクトリのアプリケーションでWeb.configファイルに<remove name="X"/>
ノード内<httpModules>
を追加することで実験してきたが、それはアウト動作していないようです。サードパーティ製のアプリケーションは、私は自分のコード/設定を変更する必要はしたくない、更新することができますので、それはおそらく、いずれかの偉大なソリューションではありません。
私は、親のWeb.configの私<location path="." inheritInChildApplications="false">
ノードの周り<system.web>
を追加してみましたが、それはまた、動作していないようでした。
-
[編集再び更に追加しました] (私が想定していたとしてではなく、リクエストごと)のIHttpModuleのInitイベントは、アプリケーションライフサイクルごとに一度解雇だけされているため、は動作しませんされて理由があります。私は、initイベントにイベントリスナーの束を追加しているので、これらはまだ後続の要求に解雇されている...
解決
あなたはこれらのディレクトリとその仮想パスのリストを持っている場合は、あなたがそれらの検索を構築することができます。
すべてのHttpRequestのあなたのモジュールをトリガするために、あなたはそれが検索中のパスのいずれかに属しているかどうかを確認するために仮想パスを確認することができます。そうならば、あなたは何もしないか、あなたのモジュールのコードを終了することができます。
PS:パフォーマンスの問題のために、あなたはおそらく、アプリケーションの状態(例えば、ハッシュマップなど)で検索を保存する