У меня есть следующие настройки при запуске.
app.UseStatusCodePagesWithReExecute("/mvc/error/", "?statusCode={0}");
У меня также есть настройка ExceptionFilter с использованием AddMvcCore ().Ниже приведен фильтр исключений.
public override void OnException(ExceptionContext context)
{
ApiError apiError;
switch (context.Exception)
{
case ApiException exception:
// handle explicit 'known' API errors
var ex = exception;
context.Exception = null;
apiError = new ApiError(ex.StatusCode, ex.Message) { Messages = ex.Messages };
context.HttpContext.Response.StatusCode = ex.StatusCode;
break;
case UnauthorizedAccessException _:
apiError = new ApiError(401, "Unauthorized Access");
context.HttpContext.Response.StatusCode = 401;
_loggingService.LogError<ApiExceptionFilter>(LogCategory.Api, context.Exception);
break;
default:
// unhandled errors
apiError = new ApiError(500, context.Exception.GetBaseException().Message) { Detail = context.Exception.StackTrace };
context.HttpContext.Response.StatusCode = 500;
_loggingService.LogError<ApiExceptionFilter>(LogCategory.Api, context.Exception);
break;
}
// always return a JSON result
context.Result = new JsonResult(apiError);
base.OnException(context);
}
Проблема заключается в том, что когда исключение возникает в методе действия, фильтр срабатывает, но отправляет результат JSON.То, что я хочу сделать, это выдвинуть исключение вплоть до промежуточного программного обеспечения UseStatusCodePagesWithReExecute.Есть идеи, как это сделать?