Files
free-crm/Presentation/ASPNET/BackEnd/Common/Middlewares/GlobalApiExceptionHandlerMiddleware.cs
2026-07-21 15:36:49 +07:00

49 lines
1.5 KiB
C#

using Microsoft.AspNetCore.Diagnostics;
namespace ASPNET.BackEnd.Common.Middlewares;
public class GlobalApiExceptionHandlerMiddleware
{
private readonly RequestDelegate _next;
public GlobalApiExceptionHandlerMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext httpContext, IExceptionHandler customExceptionHandler)
{
try
{
await _next(httpContext);
switch (httpContext.Response.StatusCode)
{
case StatusCodes.Status401Unauthorized:
await customExceptionHandler.TryHandleAsync(
httpContext,
new UnauthorizedAccessException("Unauthorized - Token missing or invalid"),
CancellationToken.None
);
break;
case StatusCodes.Status403Forbidden:
await customExceptionHandler.TryHandleAsync(
httpContext,
new Exception("Forbidden - Access denied"),
CancellationToken.None
);
break;
default:
// Let other status codes pass through
break;
}
}
catch (Exception ex)
{
await customExceptionHandler.TryHandleAsync(httpContext, ex, CancellationToken.None);
}
}
}