我在ASP.NET Core项目中使用以下代码返回详细的错误消息(与业务逻辑相关的错误):
public async Task<IEnumerable<PoolStatic>> Get(string id)
{
if (id== null)
{
var resp = new HttpResponseMessage(HttpStatusCode.BadRequest)
{
Content = new StringContent("id is not provided."),
ReasonPhrase = "id not found"
};
throw new HttpResponseException(resp);
}
....
但是,客户端获取HTTP 500
并且原始响应消息不包含我设置的消息:
HTTP/1.1 500 Internal Server Error
Date: Sat, 10 Dec 2016 02:19:09 GMT
Content-Length: 0
Server: Kestrel
答案 0 :(得分:0)
在ASP.NET Core中,实现此行为的更好方法是从控制器返回Task<IActionResult>
,这样可以执行此操作:
public async Task<IActionResult> Get(string id)
{
if (id== null)
{
return BadRequest("id is not provided.");
}
// other code, including:
// return Ok(some data);
}
BadRequest()
是一个帮助方法,可以创建BadRequestObjectResult,并使用您提供的任何数据向客户端发送400 Bad Request
响应。