0

4 つの現在の .aspx Web サイトには、承認を行うカスタム HttpModule があります (どのユーザーが何を表示できるか)。古い .aspx Web サイトを MVC に再構築しました。また、クライアントが一斉に MVC Web サイトに切り替えるわけではないため、MVC のアクション フィルターは使用できませんが、HttpModule は引き続き使用する必要があります。

問題は、Http エラー 404 が発生することです。

私が行ったこと: - MVC アプリケーションは適切に展開されたビンです (これは、IIS で構成された HttpModule がなくても正常に動作するため、検証されています)。- Web.Config と IIS7.5 で HttpModule の適切な構成が行われている (モジュールが最初に呼び出され、期待どおりに実行されるかどうかを確認するために、HttpModule からログエントリをファイルに書き込むため、これが検証されます)

Web.config ファイル:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
            <add name="WebHIS_Authorization" type="WebHIS_Authorization.AuthorizationModule" />
        </modules>
  </system.webServer>

だから、すべてがうまくいくようです。ログによると、HttpModuleのBeginRequestが入力されています。HttpModule が BeginRequest メソッドを離れる直前に、URL がまだ期待どおりであることをログファイルで確認しました。しかし、HttpModule が HttpRequest によって残され、IIS が 404 を返した後、MVC ルーティングが機能しなくなったようです。

特定のものを見る必要がある場合は、お尋ねください。適切な情報を提供します。

4

1 に答える 1

0

理由はまだわかりません。しかし、HTTP 要求ライフサイクルのすべてのイベントを処理しようとしたため、上記のエラーが発生しました。イベントにハンドラーを追加しました。

BeginRequest
AuthenticateRequest
AuthorizeRequest
ResolveRequestCache
AcquireRequestState
PreRequestHandlerExecute
PostRequestHandlerExecute
ReleaseRequestState
UpdateRequestCache
EndRequest

必要なのは BeginRequest だけですが (今後の参考のために他のイベントをログに記録しました)。そのため、他のすべてのイベントのハンドラーを削除し、BeginRequest のハンドラーを残したところ、http エラーは発生しなくなりました。

申し訳ありませんが、この動作が発生した理由に関する具体的な情報はありません。試行錯誤でこれを見つけました。うまくいけば、このスレッドは将来他の人を助けることができます.

于 2013-05-21T07:48:04.883 に答える