mirror of https://github.com/abpframework/abp
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.3 KiB
45 lines
1.3 KiB
using System;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.Extensions.Logging;
|
|
using Volo.Abp.AspNetCore.Uow;
|
|
using Volo.Abp.Domain.Entities;
|
|
using Volo.Docs;
|
|
|
|
namespace VoloDocs.Web.Utils
|
|
{
|
|
public class GlobalExceptionHandlerMiddleware
|
|
{
|
|
private readonly RequestDelegate _next;
|
|
private readonly ILogger<AbpUnitOfWorkMiddleware> _logger;
|
|
|
|
public GlobalExceptionHandlerMiddleware(RequestDelegate next, ILogger<AbpUnitOfWorkMiddleware> logger)
|
|
{
|
|
_logger = logger;
|
|
_next = next;
|
|
}
|
|
|
|
public async Task Invoke(HttpContext httpContext)
|
|
{
|
|
try
|
|
{
|
|
await _next(httpContext);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_logger.LogError("Handled a global exception: " + ex.Message, ex);
|
|
|
|
if (ex.Message.StartsWith("404 error") ||
|
|
ex is EntityNotFoundException ||
|
|
ex is DocumentNotFoundException)
|
|
{
|
|
httpContext.Response.Redirect("/error/404");
|
|
}
|
|
else
|
|
{
|
|
httpContext.Response.Redirect("/error/500");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |