Thread.CurrentPrincipal 是 Reset/ClaimsPrincipal 从 ClaimsPrincipal.Current 检索时丢失

Thread.CurrentPrincipal is Reset/ClaimsPrincipal Lost when retrieving from ClaimsPrincipal.Current

我有一个 WinForms 应用程序 运行 .Net 4.5.2.

登录时,我创建了一个带有一堆声明的 ClaimsPrincipal。我保存到Thread.CurrentPrincipal。在同一个登录过程中,ClaimsPrincipal 工作正常。

应用程序初始化后,当用户单击控件时,我尝试从 ClaimsPrincipal.Current 检索 ClaimsPrincipal。当我这样做时,它是一个 GenericPrincipal,它失去了所有声明。

我做错了什么?

这似乎是 WinForms 和 .Net 4.5.2 的问题。微软确实表示他们将停止支持 WinForms。

我在这种情况下发现,如果您在通过 Thread.CurrentPrincipal 设置它之前调用 ClaimsPrincipal.Current...您 运行 会遇到麻烦。

要么将静态对象设置为默认的 GenericPrincipal,要么 Thread.CurrentPrincipal 被重置。

不管是什么原因导致不稳定。