アプリケーションでエラーが発生するたびに、イベント ビューアで正しいエラーを表示できません。その場所で、次のエラーが発生します...
ディクショナリに渡されたモデル アイテムのタイプは 'System.Web.Mvc.HandleErrorInfo' ですが、このディクショナリにはタイプ 'LayoutPageViewModel' のモデル アイテムが必要です
このエラーが発生する理由はわかりますが (コントローラーが HandleErrorInfo 型のモデルを元のビューに渡そうとしているため)、イベント ビューアーに表示されるこのエラーを停止し、実際のエラーを表示する方法がわかりません。
したがって、一連のイベントは次のとおりです。
- アプリケーションで例外が発生する
- デフォルトのエラー処理は、タイプ「System.Web.Mvc.HandleErrorInfo」のモデルを、「LayoutPageViewModel」のモデルを受け入れるデフォルトのレイアウト ページに渡そうとします。
- レイアウトがタイプ 'HandleErrorInfo' のモデルに渡されているため、アプリケーションで別の例外が発生します。
カスタム エラー 500 ページ (web.config で指定) がヒットし、レイアウトを参照しません。
@{ Layout = null; }
エラー ページは正しく表示されますが、イベント ビューアの例外は正しくありません。
Application_Start で HandleErrorAttribute フィルターのマスターとビューを設定しようとしましたが、イベント ログに何も登録されなくなりました。また、コントローラーに次のメソッドを追加しようとしました...
protected override void OnException(ExceptionContext filterContext)
{
filterContext.Result = new ViewResult {
ViewName = "~/Views/Shared/Error.cshtml",
};
}
しかし、それは HandleErrorAttribute 回避策と同じ結果になります。
この問題を回避する方法を知っている人はいますか?