我有一個網站使用具有服務ID的應用程序池連接到數據庫。我希望能夠在顯示其實際Windows日誌名稱的網頁上填充文本框,而不是與應用程序池關聯的服務ID。我想這樣做,所以我可以使用這些信息在GridView上進行一些篩選,根據用戶名顯示數據庫中的一些數據。目前我嘗試了幾種不同的方式。從應用程序池繞過服務ID以確定用戶的實際用戶名ASP.NET C#
Environment.UserName
這使我得到用於訪問數據庫的服務ID。
System.Security.Principal.WindowsIdentity.GetCurrent().Name;
這也得到了我用來訪問數據庫的服務ID。
//Both of these return the same results described below.
HttpContext.Current.User.Identity.Name;
//and
System.Threading.Thread.CurrentPrincipal.Identity.Name;
這兩個有點奇怪。當我通過vs2010進行調試時,他們得到了我的用戶名,但是當我將這些文件複製到服務器時,它會運行,並使用應用程序池讓它無所適從。我已將它設置爲在home.aspx頁面的文本框中顯示。
對此的任何幫助將不勝感激,因爲我已到處尋找並找不到任何特定於我的情況的信息。
在此先感謝!目前正在使用
實際代碼:(返回從服務器上運行沒事的時候)
if (!IsPostBack)
{
string filterName = HttpContext.Current.User.Identity.Name;
IDFilterTextBox.Text = filterName;
}
編輯:包括一個新的方法我試過了。
那爲什麼要用HttpContext?在我看來,它會工作得很好......我不明白爲什麼我不能從中得到這個信息。順便說一句,這是一個內聯網站點。它只會提供給我公司的用戶。他們必須通過活動目錄進行訪問,這最終是我正在尋找的用戶名。如果有人有另一種方式得到這個,我會感謝幫助! – SteveAnselment 2014-10-01 22:30:49
沒有意識到用戶登錄到您的網站。查看我的更新。 – Fordio 2014-10-02 07:19:28
嘗試了System.Threading.Thread.CurrentPrincipal.Identity.Name方法,並且在從服務器運行它時它仍然返回一個空字符串。在服務ID認證之前必須有一種方法來獲取用戶的用戶名。我非常堅持這一點,並且願意爲此採取替代方法。 – SteveAnselment 2014-10-02 15:41:36