Ale*_*lex 6 error-handling angularjs angular-promise asp.net-core-mvc
我想将异常消息返回给AngularJS UI.作为后端,我使用ASP.NET Core Web Api控制器:
[Route("api/cars/{carNumber}")]
public string Get(string carNumber)
{
var jsonHttpResponse = _carInfoProvider.GetAllCarsByNumber(carNumber);
if (jsonHttpResponse.HasError)
{
var message = new HttpResponseMessage(HttpStatusCode.InternalServerError)
{
Content = new StringContent(jsonHttpResponse.ErrorMessage)
};
throw new HttpResponseException(message);
}
return jsonHttpResponse.Content;
}
Run Code Online (Sandbox Code Playgroud)
但在Angular方面,失败承诺只能看到状态和statusText"内部服务器错误":
如何将错误消息传递给Core Web Api的Angular $ http失败承诺?
除非您正在进行一些异常过滤,否则throw new HttpResponseException(message)将成为未捕获的异常,它将作为通用 500 内部服务器错误返回到您的前端。
您应该做的是返回状态代码结果,例如BadRequestResult。这意味着您的方法不需要返回字符串,而是需要返回IActionResult:
[Route("api/cars/{carNumber}")]
public IActionResult Get(string carNumber)
{
var jsonHttpResponse = _carInfoProvider.GetAllCarsByNumber(carNumber);
if (jsonHttpResponse.HasError)
{
return BadRequest(jsonHttpResponse.ErrorMessage);
}
return Ok(jsonHttpResponse.Content);
}
Run Code Online (Sandbox Code Playgroud)
另请参阅:我关于如何将未捕获的异常返回为 JSON 的答案。(如果您希望所有未捕获的异常都以 JSON 形式返回。)
| 归档时间: |
|
| 查看次数: |
2752 次 |
| 最近记录: |