繁体   English   中英

Thread.CurrentPrincipal.Identity.Name 从 WPF 为空

[英]Thread.CurrentPrincipal.Identity.Name is empty from WPF

编辑

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

结束编辑

我正在尝试调用一个现有方法(不是在任何类型的服务中;只是 POCO 中的一个方法),它通过以下方式检索当前用户:

Thread.CurrentPrincipal.Identity.Name

此代码是由其他人编写的,并且(可能)适用于他的 ASP.NET MVC 项目。 我正在尝试从 WPF 调用相同的方法,并且名称现在为空白。

对此我能做些什么吗?

Thread.CurrentPrincipal设置为new WindowsPrincipal(WindowsIdentity.GetCurrent()) 然后,您将可靠地拥有该线程生命周期内的当前主体。 您必须在您启动的任何其他线程上重复此操作。

编辑:我还应该提到 AppDomain 上的SetThreadPrincipalSetPrincipalPolicy方法。 这应该在应用程序启动时完成,并且创建的新线程现在将默认看到此主体。 如果不调用此方法,每个新线程将再次以 GenericPrincipal 开始。

尝试

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

或者:

Environment.UserName

这也对我有用:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM