每当我的应用程序发生错误时,我都无法在事件查看器中查看正确的错误。在它的地方我得到以下错误......
传入字典的模型项的类型为“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 解决方法的结果相同。
有谁知道我如何解决这个问题?