Thread.CurrentPrincipal.Identity.Name在WPF中为空

本文关键字:WPF CurrentPrincipal Identity Name Thread | 更新日期: 2023-09-27 18:02:02

编辑

简单的问题是,如何让Thread.CurrentPrincipal.Identity.Name让当前用户登录WPF?

结束编辑

我试图调用一个现有的方法(不在任何类型的服务中;只是POCO中的一个方法(,该方法使用检索当前用户

Thread.CurrentPrincipal.Identity.Name

这段代码是别人写的,(大概(与他的ASP.NET MVC项目一起使用。我正在尝试从WPF调用相同的方法,现在Name为空。

对此我能做些什么吗?

Thread.CurrentPrincipal.Identity.Name在WPF中为空

Thread.CurrentPrincipal设置为new WindowsPrincipal(WindowsIdentity.GetCurrent())。然后,您将可靠地获得该线程生命周期内的当前主体。你必须在你旋转的任何其他线程上重复这个。

编辑:我还应该提到AppDomain上的SetThreadPrincipal和SetPrincipalPolicy方法。这应该在应用程序启动时完成,现在创建的新线程将默认看到此主体。如果不调用此方法,则每个新线程都将再次使用GenericPrincipal启动。

尝试

System.Security.Principal.WindowsIdentity.GetCurrent().Name;

或:

Environment.UserName

这也对我有用:

Thread.CurrentPrincipal = new WindowsPrincipal(WindowsIdentity.GetCurrent());