![](/img/trans.png)
[英]ADFS3.0 Thread.CurrentPrincipal.Identity.Name returned as empty string between requests
[英]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 上的SetThreadPrincipal和SetPrincipalPolicy方法。 這應該在應用程序啟動時完成,並且創建的新線程現在將默認看到此主體。 如果不調用此方法,每個新線程將再次以 GenericPrincipal 開始。
嘗試
System.Security.Principal.WindowsIdentity.GetCurrent().Name;
或者:
Environment.UserName
這也對我有用:
Thread.CurrentPrincipal = new WindowsPrincipal(WindowsIdentity.GetCurrent());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.