如何返回与IActionResult兼容的UnprocessableEntity 422状态码
问题原因
你遇到的类型转换报错是因为HttpStatusCode.UnprocessableEntity是System.Net命名空间下的枚举值,并没有实现IActionResult接口,所以不能直接作为接口返回值。
你在try块中使用的Ok()是Controller基类预先封装的辅助方法,会自动返回包含200状态码的IActionResult实现实例,要返回422状态码直接调用同系列的对应方法即可。
解决方案
直接使用框架内置的UnprocessableEntity()方法,使用逻辑和Ok()完全一致:
public IActionResult GetMe() { try { return Ok(); } catch (Exception exception) { // 可以无参数直接返回,也可以传入错误信息、自定义对象作为响应内容 return UnprocessableEntity(); } }
如果你的框架版本较低没有内置该方法,也可以手动指定状态码返回,效果完全相同:
return StatusCode(Microsoft.AspNetCore.Http.StatusCodes.Status422UnprocessableEntity); // 同样支持传入响应内容:return StatusCode(422, "请求参数处理失败");
内容的提问来源于stack exchange,提问作者user584018
相关产品推荐
相关产品推荐

