Подавить ошибку из транзакции Unit of Work - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь подавить ошибку в коде, но действие MVC по-прежнему возвращает "500 внутренняя ошибка сервера".

Какие события запускаются в платформе ASP.NET Boilerplate после возврата действия?

public async Task<IActionResult> Post([FromBody]PaymentViewModel model)
{
    var result = false;

    // Storing of card must pass
    try
    {
        // ...
    }
    catch (Exception ex)
    {
        // Catch business exception, but storing
    }

    return Json(new { result });
}

1 Ответ

0 голосов
/ 01 мая 2018

Для восстановления в блоке catch начните UnitOfWork с RequiresNew:

public async Task<IActionResult> Post([FromBody]PaymentViewModel model)
{
    var result = false;

    // Storing of card must pass
    try
    {
        using (var uow = _unitOfWorkManager.Begin(TransactionScopeOption.RequiresNew))
        {
            // ...

            await CurrentUnitOfWork.SaveChangesAsync();
            await uow.CompleteAsync();
        }
    }
    catch (Exception ex)
    {
        // Catch business exception, but storing
    }

    return Json(new { result });
}

Дальнейшее объяснение: aspnetboilerplate / aspnetboilerplate # 2732 (комментарий)

...