Global.asax.cs Application_Error中的MVC自定义错误代码未按预期工作

时间:2019-06-19 14:46:01

标签: c# asp.net-mvc error-handling

我为Web应用程序设置了以下全局错误处理设置。

Global.asax.cs

ET.iterparse

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

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" });
}

一般视图:

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

当我使用VS F5调试应用程序并进入public ActionResult General() { throw new Exception("Exception XYZ"); } 视图时,将记录正确的异常(/general)。

但是,当测试已发布的IIS Web应用程序并进入Exception XYZ视图时,将记录到另一个意外的异常:

  

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

/general根本不会被记录。确实显示了带有正确错误消息(Exception XYX)的正确Error视图。

我在做什么错?如何确保nothing really happened go to bed被记录?

我目前不打算在控制器中使用Exception XYZHandleErrorAttribute

编辑 似乎此问题已在2010年的here

中讨论过

0 个答案:

没有答案