ExceptionFilter.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using Microsoft.AspNetCore.Mvc.Filters;
  2. using Microsoft.AspNetCore.Mvc;
  3. using System.Net;
  4. using AipGateway.API.Service.Models;
  5. using AipGateway.API.Service.Exceptions;
  6. namespace AipGateway.API.Service.Filters
  7. {
  8. public class ExceptionFilter : IExceptionFilter
  9. {
  10. private readonly ILogger _logger;
  11. public ExceptionFilter(ILogger<ExceptionFilter> logger)
  12. {
  13. _logger = logger;
  14. _logger.LogError("ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc: ExceptionFilter");
  15. }
  16. public void OnException(ExceptionContext context)
  17. {
  18. ErrorResponse error = new();
  19. switch (context.Exception)
  20. {
  21. case ApiException aipException:
  22. context.HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
  23. error = new ErrorResponse()
  24. {
  25. HttpCode = (int)HttpStatusCode.InternalServerError,
  26. Message = "ddd",// Messages.GeneralErrorMessage,
  27. };
  28. break;
  29. default:
  30. context.HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
  31. error = new ErrorResponse()
  32. {
  33. HttpCode = (int)HttpStatusCode.InternalServerError,
  34. Message = "xxx",// Messages.GeneralErrorMessage,
  35. };
  36. break;
  37. }
  38. _logger.LogError(context.Exception.StackTrace);
  39. ResponseContent response = new ResponseContent()
  40. {
  41. ErrorResponse = error
  42. };
  43. context.Result = new ObjectResult(response);
  44. context.ExceptionHandled = true;
  45. }
  46. }
  47. }