Как получить текущее имя пользователя Windows в ASP.NET Core 2.2, когда веб-приложение запускается от имени администратора? - PullRequest
0 голосов
/ 05 июня 2019

У нас есть веб-приложение 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")

Что я делаю не так и как мне получить ожидаемое имя?

...