0

我有一個網站使用具有服務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; 
     } 

編輯:包括一個新的方法我試過了。

回答

0

原來這竟然是用的我之前已經表明的方法之一的簡單修復。

string UserName = System.Threading.Thread.CurrentPrincipal.Identity.Name; 

棘手的部分是在IIS配置。一旦我們發現匿名身份驗證被禁用強制用戶登錄ID來通過它它工作正常。

0

我認爲你正在嘗試的是不可能的。調試時看到你的原因是VS正在運行該站點,並在你的用戶名下運行。

將應用程序部署到服務器時,運行在那裏的代碼無法訪問用戶的計算機 - 因此無法找到用戶名。

你可以在用戶的​​機器上運行一些Javascript,但我不認爲有可能從中獲取本地機器的用戶名。

更新:好的,如果用戶以某種方式登錄到網站那麼這是不同的 - 我誤解了這個問題。你可以嘗試得到它:

System.Threading.Thread.CurrentPrincipal.Identity.Name

+0

那爲什麼要用HttpContext?在我看來,它會工作得很好......我不明白爲什麼我不能從中得到這個信息。順便說一句,這是一個內聯網站點。它只會提供給我公司的用戶。他們必須通過活動目錄進行訪問,這最終是我正在尋找的用戶名。如果有人有另一種方式得到這個,我會感謝幫助! – SteveAnselment 2014-10-01 22:30:49

+0

沒有意識到用戶登錄到您的網站。查看我的更新。 – Fordio 2014-10-02 07:19:28

+0

嘗試了System.Threading.Thread.CurrentPrincipal.Identity.Name方法,並且在從服務器運行它時它仍然返回一個空字符串。在服務ID認證之前必須有一種方法來獲取用戶的用戶名。我非常堅持這一點,並且願意爲此採取替代方法。 – SteveAnselment 2014-10-02 15:41:36

相關問題