В промежуточном программном обеспечении я пытаюсь настроить это примерно так:
Код: Выделить всё
app.UseExceptionHandler(new ExceptionHandlerOptions
{
ExceptionHandler = context =>
{
var cultureCode = CultureInfo.CurrentCulture.ToString();
if (context.GetRouteData().Values.ContainsKey(RouteValueKeys.Lang))
cultureCode = context.GetRouteValue(RouteValueKeys.Lang).ToString();
var isApiRequest = context.Request.Path.Value.Contains("/api");
if (isApiRequest)
{
context.Response.Redirect($"/{cultureCode}/api/error");
}
else
{
context.Response.Redirect($"/{cultureCode}/Common/Error/GenericError");
app.UseStatusCodePagesWithReExecute("/Error/Http{0}");
}
return Task.CompletedTask;
}
});
MVC:
Код: Выделить всё
[Area("Common")]
public class ErrorController : Controller
{
private readonly ILogger logger;
public ActionResult Http404()
{
var context = HttpContext.Features.Get();
var exception = context?.Error;
logger.LogError(exception, exception?.Message);
return View();
}
}
Код: Выделить всё
[ApiController]
[AllowAnonymous]
[ApiExplorerSettings(IgnoreApi = true)]
public class ApiErrorController : ControllerBase
{
[HttpGet]
[Route("{lang:languageCode}/api/error")]
public IActionResult Error()
{
var context = HttpContext.Features.Get();
var exception = context?.Error;
Response.StatusCode = 400;
return BadRequest(exception.Message);
}
}
Спасибо
Подробнее здесь: https://stackoverflow.com/questions/785 ... -exception