6

Authentication HttpModule に問題があります。問題は、Web サーバー (IIS7) で取得したすべてのリクエストに対して明らかに実行されることです。セッション変数も使用するため、CSS や JS ファイルなどでは正しく動作しません。

私は使用しようとしました:

<add name="AuthModuleName" type="..." preCondition="managedHandler" />

しかし、役に立たない。拡張子や MIME タイプに関係なく、すべてのリクエストで引き続き実行されます。私も追加する必要があります、設定があります

<modules runAllManagedModulesForAllRequests="true">

それは私には疑わしいと思われ、実際にモジュールの前提条件を無効にしました。ただし、これを false に変更すると、アプリケーションがまったく別の方法で中断され、別の例外が発生します (SessionStateTempDataProvider では、SessionState を有効にする必要があります)。

静的コンテンツ ファイルに対する要求が行われたときに、IIS7 に HttpModule を強制的に除外させる方法を誰か助けてもらえますか?

4

2 に答える 2

3

runAllManagedModulesForAllRequestsモジュールを実際に希望どおりに構成するには、属性falseに設定する必要があります。また、必要に応じてSessionなどを正しく再構成する必要がありますが、主なものは、要求を処理するハンドラーパイプラインの実行順序です。

答えは私の他の質問の1つで提供されました:

正しく機能する答えを提供してくれたPeterに感謝します。

于 2009-09-09T07:03:49.527 に答える
1

そのためのIIS7設定については知りませんが、これを行うことができます。

セッション オブジェクトは、非静的コンテンツでのみ使用できます。

void yourEventHandler(object sender, EventArgs e) {
    HttpApplication app = (HttpApplication)sender;
    if (app.Context.Session == null) {
        return;
    }
    // then your code here...
}

これにより、コードが CSS や JS などのファイルに対して実行されなくなります。ただし、セッション オブジェクトもPostAcquireRequestStateイベントの前に準備ができていないことに注意してください。( HttpApplicationイベントの順序については、このページを参照してください。)

編集:また、ASP.NET開発サーバーで表示されます(質問でIIS7と言ったことは知っていますが)、HttpModuleは静的ファイルでも実行されます。

于 2009-07-21T03:39:18.760 に答える