Я перепробовал все предыдущие ответы и нашел ответ на MSDN после того, как ни один из них не помог мне.См. 'UserName4' для меня.
Я за Зарегистрированный пользователь , как показано:
<asp:LoginName ID="LoginName1" runat="server" />
Вот небольшая функция Iнаписал, чтобы попробовать их всех.Мой результат в комментариях после каждой строки.
protected string GetLoggedInUsername()
{
string UserName = System.Security.Principal.WindowsIdentity.GetCurrent().Name; // Gives NT AUTHORITY\SYSTEM
String UserName2 = Request.LogonUserIdentity.Name; // Gives NT AUTHORITY\SYSTEM
String UserName3 = Environment.UserName; // Gives SYSTEM
string UserName4 = HttpContext.Current.User.Identity.Name; // Gives actual user logged on (as seen in <ASP:Login />)
string UserName5 = System.Windows.Forms.SystemInformation.UserName; // Gives SYSTEM
return UserName4;
}
Вызов этой функции возвращает зарегистрированное имя пользователя по возвращении.
Обновление: я хотел бы отметить, что выполнение этого кода на моемЭкземпляр локального сервера показывает мне, что Username4 возвращает "" (пустая строка), но UserName3 и UserName5 возвращают зарегистрированного пользователя.Просто о чем-то опасаться.