API出现问题时返回错误消息

时间:2020-02-28 12:28:44

标签: c# asp.net-core

当API出现问题时,我正在尝试返回错误消息,我已经针对来自API的所有请求执行了此操作,但是对于特定的错误,该操作将显示所有用户{{1} }。

... / API / Controllers / UserControllers:

IEnumerable

我的... [HttpGet] public IEnumerable<User> GetAll() { try { return userRepository.GetAll(); } catch (Exception ex) { return StatusCode(500,ex.InnerException.Message); } } ... 显示此错误:

无法将类型“ Microsoft.AspNetCore.Mvc.ObjectResult”隐式转换为“ System.Collections.Generic.IEnumerable”。存在显式转换(您是否缺少演员表?)

我该如何解决?

2 个答案:

答案 0 :(得分:4)

您应该让控制器返回IActionResult而不是IEnumerable<User>return Ok(userRepository.GetAll())而不是userRepository.GetAll()

答案 1 :(得分:2)

更改方法以返回IActionResult。 ControllerBase包含许多用于返回不同类型结果的帮助程序方法,包括Ok(成功处理请求时,HTTP状态代码200),BadRequest(HTTP状态代码400),NotFound(HTTP状态代码404)等。对于HTTP状态代码500没有专用的帮助程序方法,但是有一个通用的StatusCode帮助程序方法,您可以将其用于任何其他状态代码:

[HttpGet]
public IActionResult<IEnumerable<User>> GetAll()
{
    try
    {
        return Ok(userRepository.GetAll());
    }
    catch (Exception ex)
    {
        return StatusCode(500, ex.InnerException.Message);
    }
}