我为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 XYZ
或HandleErrorAttribute
。
编辑 似乎此问题已在2010年的here
中讨论过