簡體   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