Thread.CurrentPrincipal.Identity.Name从WPF为空
编辑
简单的问题是,如何让Thread.CurrentPrincipal.Identity.Name
在WPF中拥有当前用户登录?
结束编辑
我正在尝试调用现有方法(不是在任何类型的服务中;只是POCO中的方法),它使用以下方法检索当前用户:
Thread.CurrentPrincipal.Identity.Name
这段代码是由其他人编写的,并且(可能)与他的ASP.NET MVC项目一起工作。 我试图从WPF调用相同的方法,而Name现在是空白的。
我能做些什么吗?
将Thread.CurrentPrincipal
设置为new WindowsPrincipal(WindowsIdentity.GetCurrent())
。 然后,您将可靠地获得该线程生命周期的当前主体。 您必须在您启动的任何其他线程上重复此操作。
编辑:我还应该提到AppDomain上的SetThreadPrincipal和SetPrincipalPolicy方法。 这应该在应用程序启动时完成,创建的新线程现在默认会看到此主体。 如果未调用此方法,则每个新线程将再次使用GenericPrincipal。
尝试
System.Security.Principal.WindowsIdentity.GetCurrent().Name;
要么:
Environment.UserName
这也对我有用:
Thread.CurrentPrincipal = new WindowsPrincipal(WindowsIdentity.GetCurrent());