Получить имя из Windows Identity на IIS

Он работает локально, но когда я загружаю свой веб-сайт на сервер IIS, он не работает: это часть моего конфигурационного файла, который, как я думал, будет работать:

<authentication mode="Windows">
</authentication>
<identity impersonate="true"/>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
</system.webServer>

Мой код asp.net, который работает локально, но не на сервере:

 string[] temp = Convert.ToString(System.Security.Principal.WindowsIdentity.GetCurrent().Name).Split('\\');
 string userName = temp[1] + "@" + temp[0];
 Console.WriteLine("name: "+ userName);

Имя / ошибка, которая сохраняется

NT AUTHORITY\IUSR

Я использую Windows Server 2012 версии 6.2 Как я могу получить имя пользователя Windows?

2 ответа

Возможно, вы используете неправильное свойство. То, что вы используете, вернет имя пользователя учетной записи, на которой запущен IIS. Таким образом, на вашем компьютере это будет ваша учетная запись, если вы, например, используете IIS Express, и учетная запись службы, под которой работает AppPool, если она находится на развернутом сервере IIS.

Чтобы получить имя учетной записи фактического пользователя / подключившегося компьютера, вы должны использовать

string[] temx = Convert.ToString(HttpContext.Request.LogonUserIdentity.Name).Split('\\');

Это предполагает, что у вас отключен аноним и вы используете какую-то аутентификацию.

Похоже, у вас все еще включена анонимная аутентификация. Убедитесь, что он отключен и включена только проверка подлинности Windows.

Второй подход для получения имени учетной записи текущего пользователя: Request.LogonUserIdentity.Name

введите описание изображения здесь

Другие вопросы по тегам