返回错误而不是响应odata .net

时间:2017-01-04 15:24:04

标签: c# .net odata

我对Odata的新用户已经使用.net(c#)和此视频https://docs.oasis-open.org/odata/odata/v4.0/odata-v4.0-part2-url-conventions.html编写了API。

问题是我有这样的构造方法:

        [EnableQuery]
    public ObjectResult<InclusionWorkBookResult> GetInclusionWorkBooks()
    {
        string query = this.Url.Request.RequestUri.Query;
        if (string.IsNullOrEmpty(query))
        {
            return Request.CreateErrorResponse(HttpStatusCode.Forbidden, "");
        }
        return db.GetInclusionWorkBookData();
    }

正如您将能够看到的那样,如果用户未指定查询(这是为了强制它们过滤,因为完整数据集是数百万行),它会返回Forbidden错误代码。 但是这不起作用,因为Request.CreateErrorRespons是一个HttpResponseMessage,get返回ObjectResult。

我知道在查询odata时可以得到一个禁止的错误(通过搞乱网址查询)。

我的问题是: 如何在不弄乱GET的返回标题的情况下返回自定义错误消息?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

您可以返回IHttpActionResult,例如:

public IHttpActionResult GetInclusionWorkBooks()
{
    string query = this.Url.Request.RequestUri.Query;
    if (string.IsNullOrEmpty(query))
    {
        return BadRequest();
    }
    return Ok(db.GetInclusionWorkBookData());
}

如果提供了查询,结果将是200(OK)和请求的数据,否则将是400 Bad Request