我试图拦截所有异常,但代码永远不会运行。我试过把GlobalFilters
它放在 ,也把它直接放在我的方法上。
我的属性:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = false)]
public class HandleExceptionAttribute : HandleErrorAttribute
{
private ILog log = LogManager.GetLogger(typeof(HandleExceptionAttribute));
public override void OnException(ExceptionContext filterContext)
{
log.Info("inside on exception"); // this never appears
}
}
我的课:
public class Tester
{
[HandleException]
public void Except()
{
var asd = 0;
var qwe = 1 / asd;
}
}
除以零给我一个异常,我的调试器捕获它,我继续,但没有任何内容写入日志文件。
记录器工作。其他日志出现在文件中。即使我禁用调试,它也不会读取日志文件,所以它不是调试器的错误。
在 IIS Express 上运行它。Windows 7的。
编辑:
把东西移到控制器上。还是行不通
public class UserController : ApiController
{
private ILog log = LogManager.GetLogger(typeof(UserController));
[HandleException]
[CheckModelForNull]
[ValidateModelState]
public object Post([FromBody]User user)
{
var asd = 0;
var qwe = 1 / asd;
return new HttpStatusCodeResult(HttpStatusCode.OK);
}
}