[英]ASP.NET Exception-Handling: ExceptionFilterAttribute vs Overwrite ExecuteAsync
在ASP.NET中,Microsoft建议我们使用ExceptionFilterAttribute来处理异常。 异常过滤器
但是我认为我们还有其他方法可以处理它。 但是我不确定这些东西之间有什么区别:
例如:我可以通过覆盖Controller类的ExecuteAsync来处理:
public class BaseController : ApiController
{
public async override Task<HttpResponseMessage> ExecuteAsync(HttpControllerContext controllerContext, CancellationToken cancellationToken)
{
var response = base.ExecuteAsync(controllerContext, cancellationToken);
if (response.IsFaulted)
{
HttpResponseMessage errorResponse = new HttpResponseMessage(System.Net.HttpStatusCode.BadRequest);
if (response.Exception.InnerException is NotImplementedException)
{
errorResponse.Content = new StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(new { ErrorCode = System.Net.HttpStatusCode.BadRequest, Message = response.Exception.InnerExceptions }));
}
errorResponse.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
return errorResponse;
}
return await response;
}
}
感谢您的支持!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.