我有一个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的调用?任何方向都将不胜感激