1

現時点では、属性runAllManagedModulesForAllRequests="true"が設定されているため、すべてのリクエストに対してモジュールが実行されています。が含まれていると思いますSessionStateModule

PostAcquireRequestStateカスタム モジュールの 1 つでイベント ハンドラーのセッション オブジェクトにアクセスしようとすると、HttpContext.Current.Sessionが null の場合HttpApplication.Context.CurrentHandlerは null になり (例: JS/CSS ファイルの場合)、ハンドラーが null の場合は null ではありませんMvcHandler(管理されたハンドラーだと思います)。

私はSessionStateModuleILSpy のコードを調べてきましたが、そのリクエストのセッションをスキップする決定をどこで行っているかを見つけることができませんでした。

私は探していましたが、%windir%\Microsoft.NET\Framework64\v4.0.30319\Config\machine.configについての言及はありません。そのフォルダには次のものが見つかりました。SessionStateModuleWeb.config

<add name="Session" type="System.Web.SessionState.SessionStateModule" />

したがって、 のような前提条件は使用していませんmanagedHandler

SessionStateModule属性runAllManagedModulesForAllRequestsが設定されている場合でも、管理されていないリソースのリクエストがスキップされる理由を知っている人はいますか?

乾杯。

4

1 に答える 1

3

IIS は、下位互換性を確保するために、マネージド ハンドラーの前提条件で既定のモジュールを読み込むようです。 http://forums.iis.net/post/1904024.aspx

于 2013-11-02T12:41:27.567 に答える