【发布时间】:2010-10-18 17:40:23
【问题描述】:
我正在使用过滤器来记录操作引发的异常,如下所示:
public override void OnActionExecuted(ActionExecutedContext filterContext) {
if (filterContext.Exception != null) {
//logger.Error(xxx);
}
base.OnActionExecuted(filterContext);
}
现在我想处理我的所有 JSON 操作以返回带有异常信息的 JSON 结果。这允许 Ajax 调用确定服务器上是否有任何错误,而不是接收错误页面源,这对 Ajax 来说是无用的。我已经在我的 AppControllerBase 中为 JSON 操作实现了这个方法:
public ActionResult JsonExceptionHandler(Func < object > action) {
try {
var res = action();
return res == null ? JsonSuccess() : JsonSuccess(res);
} catch (Exception exc) {
return JsonFailure(new {
errorMessage = exc.Message
});
}
}
这很好用,但显然 catch() 语句会阻止所有过滤器处理异常,因为实际上没有抛出异常。有什么办法可以让过滤器的异常可用(filterContext.Exception)?
【问题讨论】:
标签: c# json asp.net-mvc exception filter