如何返回带有详细错误消息的错误?

时间:2016-12-10 02:50:48

标签: c# asp.net asp.net-core

我在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

1 个答案:

答案 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响应。