2017-07-13 43 views
2

在我的開發機器上,這行代碼正確地返回了我的用戶名。WindowsIdentity.GetCurrent()。Name讓我獲得應用程序池名稱而不是用戶名

public class Constants 
{ 
    public static readonly string Username = WindowsIdentity.GetCurrent().Name.Split('\\')[1]; 
} 

但是,當我將應用程序部署到測試網絡服務器時,我得到應用程序池的名稱。

我正在使用Windows身份驗證。

我無法弄清楚爲什麼會發生這種情況以及如何解決這個問題。

回答

0

確保Windows身份驗證已啓用,並且在IIS中禁用匿名身份驗證。

<system.web> 
     <authentication mode="Windows"/> 
     <identity impersonate="true"/> 
    </system.web> 

通過單擊「連接爲」確保您的應用程序池正在使用「應用程序用戶」的傳遞身份驗證。

確保您的站點正在運行的Application Pool的Identity設置爲ApplicationPoolIdentity。

或者,您可以使用System.Web.HttpContext.Current.User.Identity.Name;來獲取用戶名。

+0

我做了完全相同的事情,我的ASP.NET模擬在IIS中啓用。我現在收到一個內部服務器錯誤。任何想法? –

相關問題