gpt4 book ai didi

c# - 传入字典的模型项是 'System.Web.Mvc.HandleErrorInfo' 类型的,但是这个字典需要一个模型项的类型

转载 作者:太空狗 更新时间:2023-10-29 20:41:53 26 4
gpt4 key购买 nike

每当我的应用程序发生错误时,我都无法在事件查看器中查看正确的错误。在它的地方我收到以下错误...

The model item passed into the dictionary is of type 'System.Web.Mvc.HandleErrorInfo', but this dictionary requires a model item of type 'LayoutPageViewModel'

我知道为什么会出现这个错误(因为 Controller 试图将 HandleErrorInfo 类型的模型传递给原始 View )但我无法弄清楚的是如何阻止这个错误出现在事件查看器中并显示真实的错误。

所以事件的顺序是:

  1. 应用程序出现异常
  2. 默认错误处理尝试将“System.Web.Mvc.HandleErrorInfo”类型的模型传递到默认布局页面,该页面接受“LayoutPageViewModel”模型
  3. 应用程序中出现另一个异常,因为正在向布局传递类型为“HandleErrorInfo”的模型
  4. 自定义错误 500 页面(在 web.config 中指定)被命中,它没有引用任何布局:

    @{ Layout = null; }
  5. 错误页面显示正确,但事件查看器中的异常不正确。

我已尝试在 Application_Start 中为 HandleErrorAttribute 过滤器设置主视图和 View ,但这会停止在事件日志中注册任何内容。我还尝试将以下方法添加到 Controller 中......

protected override void OnException(ExceptionContext filterContext)
{
filterContext.Result = new ViewResult {
ViewName = "~/Views/Shared/Error.cshtml",
};
}

但这与 HandleErrorAttribute 解决方法的结果相同。

有人知道我该如何解决这个问题吗?

最佳答案

听起来您遇到了次要错误,这使得最终结果成为基于类型的问题。

在尝试其他处理异常的方法之前,会查看您显示异常的方式。

您如何知道第一次访问了正确的错误页面?

错误页面包括哪些内容,其他内容会不会触发错误?

知道你说过错误页面没有对布局页面的引用。将仔细检查这是否实际被使用,而不仅仅是在第二个实例中被调用,交替地从 main 中删除布局以确保。

确保您的错误页面始终有自己的简化布局页面,这样就不会因为强类型布局/母版页出现问题而导致与您的错误类似的错误。

关于c# - 传入字典的模型项是 'System.Web.Mvc.HandleErrorInfo' 类型的,但是这个字典需要一个模型项的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19297095/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com