收到请求时应用内容协商

时间:2019-12-04 19:24:07

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

我有一个ASP.NET Core应用程序,该应用程序通过

使用内容协商
services.AddMvcCore(setupAction =>
{
        setupAction.ReturnHttpNotAcceptable = true;
}

工作原理,当指定错误的内容类型时,我的控制器将返回406,正如我所期望的那样。但是,这仅在返回响应时发生,这意味着在系统上已完成工作并在最终返回406之前生成了响应。当内容协商失败时,我想将系统上正在执行的工作短路。

当前的内容协商方案已内置在框架中,因此其中没有要发布的相关代码。该控制器是一个简单的REST api控制器,它调用服务类。

[HttpGet("{internalId}", Name = "GetUserById")]
public IActionResult GetUserById(long internalId)
{
    IUser user = null;
    try
    {
        user = _userInfoService.GetUserInfo(internalId);
        if (user != null)
        {
            return new OkObjectResult(user)
        }
        else
        {

            return new NotFoundObjectResult(user);
        }
    }
    catch (ArgumentException ex)
    {
        return new BadRequestObjectResult(ex.Message);
    }
}

我已与调试器一起完成了此过程,并验证了仅当返回ObjectResult时才进行内容协商。如何通过手动处理conneg来缩短对UserInfoService的调用?任何方向都将不胜感激

0 个答案:

没有答案