如何在 mvc4 中捕获未处理的异常,[不使用 ELMAH]。
我尝试调用 Application_Error
,它有效但记录了所有错误,包括未找到脚本和未找到不需要的图像路径。
可以排除的错误示例
The controller for path '/Image/*.png' was not found or does not implement IController
The controller for path '/~/Scripts/*.js' was not found or does not implement IController
代码
void Application_Error(object sender, EventArgs e)
{
Exception exc = Server.GetLastError();
//logging Exception (exc)
}
最佳答案
创建自定义错误处理程序并捕获您想要的(并记录下来)并忽略您不想要的。
CustomHandleErrorAttribute
public class CustomHandleErrorAttribute : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
if (!(filterContext.Exception is InvalidOperationException))
{
// log
}
}
}
过滤器配置
您需要全局注册错误处理程序。
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new CustomHandleErrorAttribute());
}
}
关于c# - 在 mvc4 中捕获未处理的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24380177/