ASP. NET Core 3.0 WebAPI - почему я по-прежнему получаю InternalServerError, когда исключение обрабатывается в методе контроллера? - PullRequest
1 голос
/ 21 января 2020

Когда я ловлю исключение в контроллере, клиентская сторона все еще получает InternalServerError, как я могу решить эту проблему?

У меня есть свой собственный класс 'Result', который я могу установить как неуспешный, и заполнить удобным сообщением об ошибке, я хочу перехватывать исключения в указанных c методах контроллера и отправлять обратно мой неудачный ' Приведите 'класс вместо кода 500 InternalServerError.

Спасибо за помощь!

[HttpGet]
    [Route(Server_DevTestApiEndpoints.INTERNAL_SERVER_EXCEPTION_RESULT_TEST)]
    public Result GetInternalServerExceptionTest()
    {
        try
        {
            throw new Exception();
            return new Result();
        }
        catch (Exception e)
        {
            return new Result(e);
        }
    }

1 Ответ

0 голосов
/ 21 января 2020

С архитектурной точки зрения будет лучше использовать ExceptionFilterAttribute, который будет отвечать за отлов всех ошибок в действиях вашего контроллера:

public class LogExceptionFilterAttribute : ExceptionFilterAttribute
{
    public override async Task OnExceptionAsync(ExceptionContext context)
    {
        //log your exception;
        context.Result = new ObjectResult("your custom message")
        {
            StatusCode = StatusCodes.Status200OK
        };
    }
}

и просто украсит ваше действие или весь контроллер:

[HttpGet]
[LogExceptionFilter]
[Route(Server_DevTestApiEndpoints.INTERNAL_SERVER_EXCEPTION_RESULT_TEST)]
public Result GetInternalServerExceptionTest()
{
    //your action logic
}
...