2010-12-19 6 views
4

MvcApplication.Initでは、モジュールコレクションには__ASP_IntegratedDynamicModule_Shimという名前のエントリが1つしかありません。私のwebformsアプリケーションには、約13のモジュールがあり、そのうちの1つは「FormsAuthentication」でした。MVC 3でMvcApplication.Modulesが驚くほど空です

私のwebformsアプリケーションでは、HttpApplication.Initをオーバーライドしてから、FormsAuthenticationModuleを取得し、自分のハンドラに代わるためにAuthenticateイベントに接続するためにモジュール["FormsAuthentication"]を使用します。私はMVC 3に移行しているので、これをどうやって行うのか分かりません。

認証モード= "フォーム"が正常に動作しているので、フォーム認証モジュールが私のパイプラインで明らかに実行されています標準のFormsAuthenticationテクニックを使用して)。私は統合されたASP.NET 4.0パイプラインでIIS 7を使用しています。

他に誰かが気付いていますか?私はおそらく何か本当にダムをやっているだけです...

答えて

2

統合パイプラインでは、Init()メソッドが複数回実行されます。 MVC 3がASP.NETパイプラインにフックする方法のため、Init()への最初の呼び出しに空のモジュールコレクションが含まれている可能性があります。それ以降の呼び出しには、探しているモジュールが含まれている必要があります。

モジュール["FormsAuthentication"]が存在しない場合は、あなたのInit()コードを変更することをお勧めします。コードは最終的に再び呼び出され、最終的にそのイベントをフックできます。

+0

ありがとう、Levi。 WebFormsでは、IIRCは複数回呼び出されたInitを見ることに慣れていました。これは、IIRCはオブジェクトのプールを初期化して、異なるスレッドで同時に受信する要求を処理することでした。私はそれがやや不完全な状態でこれのように呼ばれるのを見たことはなかった。最初に失敗しないようにコードを調整した後、パイプラインを通して2回目は17個のモジュールで初期化されました。これは非常に合理的な解決策であるように見えます。 –

関連する問題