Получить запрос / модель тела в ASP. NET Базовый фильтр исключений без воспроизведения - PullRequest
1 голос
/ 03 марта 2020

У меня есть несколько моделей с общим интерфейсом, это выглядит как

public interface IRequest {
    public string RequestId { get; set; }
}

Пример модели, которая реализует это выглядит как

public class CatRequest : IRequest {
    public string RequestId { get; set; }
    public string Name { get; set; }

У меня есть CatController это выглядит как

public class CatController: ControllerBase {
    [HttpPost]
    public IActionResult AddCat([FromBody] cat) {
        // call database and add cat to db
    }
}

Хорошо зная, что некоторые вещи могут go ошибаться в работе базы данных, у меня есть глобальный фильтр исключений, который работает и выглядит как

public void OnException(ExceptionContext context) {
    // create a proper error response message
    var error = new ErrorResponse() {
        ResponseCode = 400,
        RequestId = 2, // HERE IS THE SPOT, I WANT TO READ RequestId from the RequestBody or Model without re-reading the request

        // The solution below works, but only when it is a custom exception where I had previously manually added the Data entry
        // RequestId = context.Exception.Data["RequestId"]?.ToString()
    };
    context.Result = new JsonResult(error);
}

Может Я получаю лучшую реализацию?

Спасибо.

1 Ответ

0 голосов
/ 04 марта 2020

Если вы просто хотите обрабатывать исключения, возникающие в действиях вашего контроллера, используйте фильтр исключений для достижения этой цели.

Кроме того, вы также можете использовать промежуточное ПО для глобальной обработки ошибок.

Для получения дополнительной информации о «Обработка ошибок в ASP. NET Core», пожалуйста, проверьте: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/error-handling?view=aspnetcore-3.1#exception -filters

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...