C# Web API 2:ApicController.User属性与Thread.CurrentPrincipal不匹配
我正在将ASP.NET Web API应用程序移植到Web API 2候选版本。此应用程序使用MessageHandler通过解析和解密HTTP头来授权用户。然后,它创建一个适当的ClaimsPrincipal并设置C# Web API 2:ApicController.User属性与Thread.CurrentPrincipal不匹配,c#,asp.net-web-api,C#,Asp.net Web Api,我正在将ASP.NET Web API应用程序移植到Web API 2候选版本。此应用程序使用MessageHandler通过解析和解密HTTP头来授权用户。然后,它创建一个适当的ClaimsPrincipal并设置HttpContext.Current.User和Thread.CurrentPrincipal 在WebAPI1.0中,控制器可以访问ApiController.User属性,并获取我先前在消息处理程序中设置的主体。在Web API 2.0中,用户属性包含一个有效的空白Generi
HttpContext.Current.User
和Thread.CurrentPrincipal
在WebAPI1.0中,控制器可以访问
ApiController.User
属性,并获取我先前在消息处理程序中设置的主体。在Web API 2.0中,用户属性包含一个有效的空白GenericPrincipal
,即使Thread.CurrentPrincipal
是正确的
这是故意的吗?这是web API 2的错误吗(很可能)?也许我没有正确设置校长
我一直在使用
ApiController.User
,因为它似乎比直接使用Thread.CurrentPrincipal
“更正确”,但这始终是解决问题的可能方法。花了我一段时间,但事实证明这是RC中的一个问题,在最终版本的Web API 2中已修复。现在一切正常 您可以分享一些代码吗?我建议使用新的HttpRequestContext.Principal作为存储主体的位置。ApiController.User
只是RequestContext.Principal