如何在mvc4中捕获unhandeld异常,[不使用ELMAH]。
我尝试了调用Application_Error
,它可以工作,但记录所有错误,包括未找到的脚本和未找到的图像路径,这是不需要的。
可以排除的错误示例
未找到路径'/Image/*.png'的控制器或未实现IController
路径'/〜/ Script / *。js'的控制器未找到或未实现IController
代码
void Application_Error(object sender, EventArgs e)
{
Exception exc = Server.GetLastError();
//logging Exception (exc)
}
答案 0 :(得分:0)
创建自定义错误处理程序并捕获您想要的内容(并记录下来)并忽略您不想要的内容。
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());
}
}
答案 1 :(得分:0)
这些错误是未处理的异常。我认为您可以获取此错误类型并忽略它以进行日志记录
protected void Application_Error()
{
var ex = Server.GetLastError();
if(check exceptiontype)
{}
}