首页 > 解决方案 > Global.asax.cs Application_Error 中的 MVC 自定义错误代码未按预期工作

问题描述

我为 webapp 设置了以下全局错误处理设置。

全球.asax.cs

protected void Application_Error()
{
    //log error
    _logger.Error("something bad happened", Server.GetLastError());

    //clear error
    Server.ClearError();

    //redirect to error page
    Response.RedirectToRoute(new { controller = "services", action = "error" });
}

具有错误操作的服务控制器。此视图使用 ErrorModel 类作为模型。

public ActionResult Error()
{
    return View(new ErrorModel{ Message = "nothing really happened go to bed" });
}

普遍的看法:

public ActionResult General()
{
    throw new Exception("Exception XYZ");
}

当我使用 VS F5 调试应用程序并/general查看时,记录了正确的异常 ( Exception XYZ)。

但是在测试已发布的 IIS webapp 并/general查看时,会记录一个不同的意外异常:

System.InvalidOperationException:传入字典的模型项的类型为“System.Web.Mvc.HandleErrorInfo”,但此字典需要“MyWebsite.Models.Services.ErrorModel”类型的模型项。

Exception XYX根本没有记录。Error带有正确错误消息 ( )的正确视图nothing really happened go to bed会显示出来。

我究竟做错了什么?我如何确保Exception XYZ被记录?

我目前不打算使用HandleErrorAttributeoverride void OnException在控制器中。

编辑 似乎这个问题已经在 2010 年在这里讨论过

标签: c#asp.net-mvcerror-handling

解决方案


推荐阅读