每当我的应用程序发生错误时,我都无法在事件查看器中查看正确的错误.在它的位置我得到以下错误…
The model item passed into the dictionary is of type ‘System.Web.Mvc.HandleErrorInfo’,but this dictionary requires a model item of type ‘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解决方法具有相同的结果.
有谁知道如何解决这个问题?