У нас есть веб-приложение ASP.NET Core 2.2, размещенное на IIS и работающее под MyComputer \ MyAdminUser Пользователь Windows (с правами администратора). Мне нужно получить имя текущего пользователя Windows, который работает с нашим приложением, например, f.ex. MyComputer \ MyClientUser . Все пользователи клиента являются локальными пользователями ( MyComputer \ ... ). Как я могу это сделать?
Я пытался использовать разные подходы, но никто не дает мне ожидаемого результата ( MyClientUser ):
1. HttpContext.Current.Request.LogonUserIdentity;
«HttpContext» не содержит определения для «Current
», и доступный метод расширения «Current», принимающий первый аргумент типа «HttpContext», не найден ...
2. Request.LogonUserIdentity;
та же проблема с LogonUserIdentity
3. Request.ServerVariables["LOGON_USER"];
та же проблема с ServerVariables
4. Request.Headers
Этот список не содержит никакой информации о текущем пользователе Windows
5. Environment.UserName
Результат "MyAdminUser"
6. WindowsIdentity.GetCurrent().Name
Результат "MyComputer \ MyAdminUser"
7. ManagementObjectCollection collection =
new ManagementObjectSearcher("SELECT UserName FROM Win32_ComputerSystem")
.Get();
collection?.Cast<ManagementBaseObject>()?.First()?.Properties?["UserName"]?.Value
Для Visual Studio результат правильный (текущий пользователь Windows), но в IIS Properties?["UserName"]?.Value
является нулевым или пустым (Properties?["UserName"]?.Name
= "UserName"
)
Что я делаю не так и как мне получить ожидаемое имя?