我正在将ASP.NET Web API应用程序移植到Web API 2候选版本中。此应用程序使用MessageHandler通过解析和解密HTTP标头来授权用户。然后,它会创建一个合适的ClaimsPrincipal并设置HttpContext.Current.User
和Thread.CurrentPrincipal
。
在Web API 1.0中,控制器可以访问ApiController.User
属性并获取我之前在消息处理程序中设置的主体。在Web API 2.0中,即使GenericPrincipal
正确,User属性也包含有效空白Thread.CurrentPrincipal
。
我一直在使用ApiController.User
,因为它似乎比直接Thread.CurrentPrincipal
更“正确”,但这始终是解决问题的可能方法。
答案 0 :(得分:0)
我花了一段时间,但事实证明这是RC中的一个问题,它已在Web API 2的最终版本中得到修复。现在工作正常!