Как передать клиенту сообщение об ошибке из метода HttpPost asyn c контроллера Web API, возвращающего Task <Type>? - PullRequest
1 голос
/ 25 февраля 2020

Метод HttpPost моего Web API выглядит примерно так

 [HttpPost("Data/{Customer}")]
    public async Task<DataSet> GetCustomerDataAsync(string CustomerID, [FromBody] QueryParameters[] parameters, CancellationToken ct)
    {
        return await GetCustomerData(CustomerID, parameters, ct);
    }

GetCustomerData запускает хранимую процедуру, которая может вызывать RAISEERROR во время проверки параметров. Ошибка получена как Ошибка 500 (Внутренняя ошибка сервера) на стороне клиента. Интересно, как я могу передать текст сообщения об ошибке хранимой процедуры клиенту с помощью метода GetCustomerDataAsyn c, описанного выше?

1 Ответ

2 голосов
/ 25 февраля 2020

Измените тип возвращаемого значения действия на IActionResult, чтобы обеспечить более гибкий ответ

[HttpPost("Data/{Customer}")]
public async Task<IActionResult> GetCustomerDataAsync(string CustomerID, [FromBody] QueryParameters[] parameters, CancellationToken ct) {
    try {
        DataSet data = await GetCustomerData(CustomerID, parameters, ct);
        return Ok(data);
    } catch(Exception ex) {
        //handle error (Logging?) and return appropriate response
        return StatusCode(500, new { error = "friendly_message_here" });
    }
}

Если исключение не выдается, данные возвращаются с HTTP 200 OK. Если выдается исключение, вы можете вернуть соответствующий ответ.

Ссылка Типы возвращаемых действий контроллера в ASP. NET Core Web API

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