2012-12-28 22 views
2

我認爲它很容易獲得登錄用戶名,事實上,它可以正常工作與堆棧溢出大多數可用的響應,但當我發佈網站所有方法失敗。 任何人都可以請指導我從以下條件獲取Windows登錄用戶的名稱。獲取系統登錄用戶名在C#中,也在IIS中工作

  1. 我只需要登錄用戶名,所以當你寫回應時忘了AD。

  2. 我不能改變到Windows身份驗證模式,因爲用戶可能誰不是公司的一部分,一個guest用戶,但仍然有我的內部網站訪問

  3. 這是不可能的,因爲有更多的更改用戶瀏覽器設置超過6000個用戶
  4. ,我希望每個人都能夠使用的網站

  5. 我已經嘗試以下解決方案,我不能禁用匿名身份驗證,當我在調試模式下運行的網站,但都未能一切工作正常當我發佈我們時返回用戶名在IIS bsite所以請幫助我做一些新的一樣的解決方案

string _windowLogonUserName = System.Environment.UserName.ToString() 

string _windowLogonUserName = 
    WindowsIdentity.GetCurrent().Name.Remove(0, _adDomainName.Length + 1) 

string _windowLogonUserName = 
    System.Web.HttpContext.Current.User.Identity.Name.ToString(); 

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

AppDomain appDomain = Thread.GetDomain(); 
appDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal); 
WindowsPrincipal windowsPrincipal = (WindowsPrincipal)Thread.CurrentPrincipal; 
Logger.Write("username principal" + windowsPrincipal.Identity.Name); 
Request.ServerVariables["LOGON_USER"] 
+0

什麼是您的Web配置中設置的身份驗證模式?它是Windows嗎? –

+0

是什麼讓你相信匿名用戶會準確地擁有Windows原則? –

+0

沒有認證模式是默認手動設置它是Windows我認爲 – user1934825

回答

2

這聽起來像你正在發佈的網站上的AD域之外。如果服務器不在域上,它將無法驗證(甚至接受)Windows用戶。基本的答案是你無法得到它。

如果服務器是內部的(在域上),則可以在IIS中啓用集成的Windows身份驗證。 Here's a reference

+0

我的服務器只在域。通過啓用窗口身份驗證模式,我已經厭倦了它,但沒有成功。 – user1934825

相關問題