如何在IEnumerable枚举失败时返回正确的状态码。 ASP.NET WebApi

时间:2015-07-16 09:25:39

标签: c# asp.net linq asp.net-web-api

注意:仅在控制器测试期间发生以下问题。这是精炼问题How to properly integration test Web Api controller with IEnumerable results?

有没有办法避免调用ToList方法但是在延迟LINQ执行异常的情况下仍然返回正确的状态代码以保持控制器尽可能简单?

E.g。我有这样的API端点:

public class EntityController : ApiController
{
    ...
    public IHttpActionResult Get()
    {
        return Ok(Session.Query<Entity>());
    }
}

上面的代码将始终返回成功的状态代码,但是对于ToList,如果执行查询时遇到任何问题,它将无法成功。

public class EntityController : ApiController
{
    ...
    public IHttpActionResult Get()
    {
        return Ok(Session.Query<Entity>().ToList());
    }
}

它的工作原理很清楚,但有没有更智能的方法来返回正确的状态代码并保持控制器简单?

1 个答案:

答案 0 :(得分:0)

您可以调试操作,然后查看抛出的异常。

然后你可以轻松地尝试捕获这行代码,如果失败了,你会给出不同的东西,然后返回500.

try
{
    return //...;
}
catch (//your Exception)
{
    return //... As Example BadRequest or something different
}

希望它有所帮助。