Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Web API 2:ApicController.User属性与Thread.CurrentPrincipal不匹配_C#_Asp.net Web Api - Fatal编程技术网

C# Web API 2:ApicController.User属性与Thread.CurrentPrincipal不匹配

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

我正在将ASP.NET Web API应用程序移植到Web API 2候选版本。此应用程序使用MessageHandler通过解析和解密HTTP头来授权用户。然后,它创建一个适当的ClaimsPrincipal并设置
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