2

特定のタスク(承認など)を実行するために作成したIHttpModuleを含む.netWebサイトがあります。しかし、Webサイト内には、サードパーティのアプリケーションにマップされている仮想ディレクトリがいくつかあります。残念ながら、変更や移動はできません(コミュニティサーバーフォーラム、adxstudio cmsなど)。

これらの仮想ディレクトリのコンテンツが要求されたときにIHttpModuleが実行されないようにする方法を探しています。これは可能ですか?

[編集-以下を追加]

<remove name="X"/>仮想ディレクトリアプリケーションのWeb.configファイルのノード内に追加することを試みてき<httpModules>ましたが、うまくいかないようです。サードパーティのアプリケーションを更新できるため、コードや構成を変更する必要がないため、これも優れたソリューションではない可能性があります。

<location path="." inheritInChildApplications="false">また、親Web.configにノードの周りを追加しようとしました<system.web>が、それも機能しなかったようです。

[再編集-さらに追加]

理由は、IHttpModuleのInitイベントが(私が想定していたリクエストごとではなく)アプリケーションのライフサイクルごとに1回だけ発生するためです。initイベントに多数のイベントリスナーを追加したので、これらは後続のリクエストで引き続き起動されます...

4

1 に答える 1

2

これらのディレクトリとその仮想パスのリストがある場合は、それらのルックアップを作成できます。

モジュールをトリガーするすべてのHttpRequestについて、仮想パスをチェックして、それがルックアップ内のいずれかのパスに属しているかどうかを確認できます。はいの場合は、何もしないか、モジュールのコードを終了できます。

PS:パフォーマンスの問題については、ルックアップをアプリケーションの状態(ハッシュマップなど)で保存することをお勧めします。

于 2010-02-07T05:24:35.307 に答える