3

我正在尝试在 MVC 3 中实现全局未处理的异常日志记录。我已经像这样设置了我的 web.config..

<customErrors mode="On" defaultRedirect="/error/">
  <error statusCode="500" redirect="/error/http500"/>
  <error statusCode="404" redirect="/error/http404"/>
</customErrors>

当我为控制器触发异常时,它会按预期重定向到错误页面。问题是,当我Server.GetLastError()在 Global.asax 中使用时,异常总是

"The view 'Error' or its master was not found or no view engine supports the searched locations. The following locations were searched:\r\n~/Views/deanslist/Error.aspx\r\n~/Views/deanslist/Error.ascx\r\n~/Views/Shared/Error.aspx\r\n~/Views/Shared/Error.ascx\r\n~/Views/deanslist/Error.cshtml\r\n~/Views/deanslist/Error.vbhtml\r\n~/Views/Shared/Error.cshtml\r\n~/Views/Shared/Error.vbhtml"

我期待它提供实际抛出的异常。我究竟做错了什么?

4

1 回答 1

5

尝试从 Global.asax 中删除以下行:

filters.Add(new HandleErrorAttribute());

HandleError属性在 Release 模式下拦截所有异常并尝试呈现Error.cshtml视图。您可能已经从文件夹中删除了此视图~/Views/Shared,因此当引发未处理的异常时,此异常处理程序会拦截异常并尝试呈现不存在的视图。

于 2012-05-06T19:16:26.297 回答