无法访问 User.Identity 中的声明,但可以在断点视图中查看它们
Can't access Claims in User.Identity but can see them in break-point view
我知道 Claims 字段在 User.Identity 中,因为我可以使用断点查看它及其内容视图,如图所示。但是,当我在开发过程中尝试使用智能感知访问它时,我做不到。 Immediate Window 也是如此 - 属性 似乎不存在。
这是怎么回事?
User.Identity 属性 很可能是 IIdentity
type. On the other hand the instance stored in it, is of ClaimsIdentity 类型,正如您在调试器中看到的那样。
您需要 cast 将一种类型转换为另一种类型才能访问该值:
ClaimsIdentity identity = User.Identity as ClaimsIdentity;
IEnumerable<Claim> claims = identity.Claims;
您还可以右键单击调试器弹出窗口中的声明,然后单击 "Copy Expression"。
然后您可以立即粘贴 window 以了解如何访问它。在我的例子中是这个
((Microsoft.IdentityModel.Claims.ClaimsIdentity)((Microsoft.IdentityModel.Claims.ClaimsPrincipal)User).Identity).Claims
很讨厌哈..
我知道 Claims 字段在 User.Identity 中,因为我可以使用断点查看它及其内容视图,如图所示。但是,当我在开发过程中尝试使用智能感知访问它时,我做不到。 Immediate Window 也是如此 - 属性 似乎不存在。
这是怎么回事?
User.Identity 属性 很可能是 IIdentity
type. On the other hand the instance stored in it, is of ClaimsIdentity 类型,正如您在调试器中看到的那样。
您需要 cast 将一种类型转换为另一种类型才能访问该值:
ClaimsIdentity identity = User.Identity as ClaimsIdentity;
IEnumerable<Claim> claims = identity.Claims;
您还可以右键单击调试器弹出窗口中的声明,然后单击 "Copy Expression"。
然后您可以立即粘贴 window 以了解如何访问它。在我的例子中是这个
((Microsoft.IdentityModel.Claims.ClaimsIdentity)((Microsoft.IdentityModel.Claims.ClaimsPrincipal)User).Identity).Claims
很讨厌哈..