无法访问User.Identity中的声明,但可以在断点视图中查看它们

时间:2016-01-09 21:20:17

标签: c# intellisense identity claims-based-identity

我知道字段 Claims 位于 User.Identity 中,因为我可以使用断点视图查看它及其内容,如图所示。但是,当我尝试在开发期间使用intellisense访问它时,我不能。立即窗口也是如此 - 该属性似乎不存在。

这是怎么回事?

enter image description here

2 个答案:

答案 0 :(得分:3)

User.Identity属性最有可能是IIdentity类型。另一方面,存储在其中的实例是ClaimsIdentity类型,您可以在调试器中看到。

您需要cast一种类型来访问另一种类型:

ClaimsIdentity identity = User.Identity as ClaimsIdentity;
IEnumerable<Claim> claims = identity.Claims;

答案 1 :(得分:0)

您也可以在调试器弹出窗口中右键单击“声明”,然后单击“复制表达式”。

然后,您可以粘贴到即时窗口中以了解如何访问它。就我而言,就是这个

((Microsoft.IdentityModel.Claims.ClaimsIdentity)((Microsoft.IdentityModel.Claims.ClaimsPrincipal)User).Identity).Claims

非常讨厌嗯..