如何当IEnumerable的枚举失败返回正确的状态码。 ASP.NET的WebAPI(How

2019-10-23 22:19发布

注意:只有控制器的测试过程中出现如下问题发生。 这里是精问题如何正确地集成测试网页API控制器IEnumerable的结果吗?

有什么办法避免调用ToList方法,但仍处于延迟从LINQ执行异常的情况下返回正确的状态代码保持控制器尽可能简单?

例如,我有这样的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());
    }
}

为什么会这样工作的原因是清楚的,但有返回正确的状态码,并保持控制简单更聪明的方式?

Answer 1:

你可以调试的动作,然后看看有什么异常获取引发。

然后你就可以轻松的try-catch这行代码,如果要是失败了,你给不同的东西,然后回500。

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

希望能帮助到你。



文章来源: How to return correct status code when enumeration of IEnumerable fails. ASP.NET WebApi