【发布时间】:2013-10-18 06:59:52
【问题描述】:
每当我的应用程序发生错误时,我都无法在事件查看器中查看正确的错误。在它的地方我得到以下错误......
传入字典的模型项是“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 解决方法的结果相同。
有人知道我可以如何解决这个问题吗?
【问题讨论】:
-
你看到这个答案了吗? stackoverflow.com/questions/812235/…
-
是的,我已经尝试过了,但它没有重定向到我的自定义错误 500 页面,也没有将警告记录到事件日志中。
标签: c# asp.net-mvc asp.net-mvc-4