当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”。存在显式转换(您是否缺少演员表?)
我该如何解决?
答案 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);
}
}