Jaa*_*nus 2 c# asp.net-mvc exception-handling asp.net-mvc-4 asp.net-apicontroller
我试图拦截所有异常,但是代码永远不会运行。我尝试将其放到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
}
}
Run Code Online (Sandbox Code Playgroud)
我的课:
public class Tester
{
[HandleException]
public void Except()
{
var asd = 0;
var qwe = 1 / asd;
}
}
Run Code Online (Sandbox Code Playgroud)
除以零会给我一个异常,调试器会捕获它,我继续,但是没有任何内容写入日志文件。
记录器正常工作。其他日志出现在文件中。即使禁用调试,它也不会读取日志文件,因此这不是调试器的错误。
在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);
}
}
Run Code Online (Sandbox Code Playgroud)
ApiController不使用 HandleErrorAttribute
应该更好地使用 ExceptionFilterAttribute
public class NotImplExceptionFilterAttribute : ExceptionFilterAttribute
{
public override void OnException(HttpActionExecutedContext context)
{
log.error("ERROR",context.Exception);
}
}
Run Code Online (Sandbox Code Playgroud)
http://www.asp.net/web-api/overview/web-api-routing-and-actions/exception-handling
| 归档时间: |
|
| 查看次数: |
5372 次 |
| 最近记录: |