Web API 2:ApiController.User属性与Thread.CurrentPrincipal不匹配

时间:2013-09-12 06:20:35

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

我正在将ASP.NET Web API应用程序移植到Web API 2候选版本中。此应用程序使用MessageHandler通过解析和解密HTTP标头来授权用户。然后,它会创建一个合适的ClaimsPrincipal并设置HttpContext.Current.UserThread.CurrentPrincipal

在Web API 1.0中,控制器可以访问ApiController.User属性并获取我之前在消息处理程序中设置的主体。在Web API 2.0中,即使GenericPrincipal正确,User属性也包含有效空白Thread.CurrentPrincipal

这是故意的吗?它是Web API 2的一个错误(非常可能)吗?也许我没有正确设置校长?

我一直在使用ApiController.User,因为它似乎比直接Thread.CurrentPrincipal更“正确”,但这始终是解决问题的可能方法。

1 个答案:

答案 0 :(得分:0)

我花了一段时间,但事实证明这是RC中的一个问题,它已在Web API 2的最终版本中得到修复。现在工作正常!