2013-12-18 4 views
2

Я работаю над размещенным приложением ASP.Net с проверкой подлинности Windows, и мне нужно получить имя пользователя для различных задач персонализации. Каталог на хост-машине установлен, чтобы иметь проверку подлинности Windows и файл web.config также имеет: -Пользователи, неразличимые в Hosted ASP.Net Application

<authentication mode="Windows"> 
</authentication> 

в нем. Я пробовал различные методы в приложении, чтобы получить имя пользователя со следующими результатами: -

Source               Result 
System.Web.HttpContext.Current.Request.LogonUserIdentity.Name 'EZ\urlname_a' 
System.Environment.UserName         'NETWORK SERVICE' 
System.Web.HttpContext.Current.User.Identity.Name    '' 
this.Request.ServerVariables["LOGON_USER"]      '' 
this.Request.ServerVariables["AUTH_USER"]      '' 
this.User.Identity.Name          '' 

благодаря ответам here, here и here, среди других. Ни одно из них не различает различные имена пользователей, которые были введены.

Есть ли что-нибудь еще, что я могу попробовать в коде, чтобы получить имя (или прокси для имени)? Есть ли что-нибудь, что я могу проверить в web.config? Или, если мне нужно взять дело с хозяином, есть ли какой-нибудь разумный вопрос, который я могу задать?

Редактировать Я установил каталог приложения и .Net, используя диалог IIS хоста.

+0

Хостинг вы используете IIS? – Amber

+0

@ Амбер, да, я так считаю. –

+0

Необходимо проверить, что в диспетчере IIS включена только проверка подлинности Windows. Поскольку в настоящее время он использует «NETWORK SERVICE», который (предположительно) устанавливает пул приложений. – Amber

ответ

1

Необходимо установить IIS только для проверки подлинности Windows, а затем использовать Page.User.Identity.Name или аналогично для получения имени пользователя Windows.

На панели «Аутентификация» установите для проверки подлинности Windows «Включено» и «Отключить анонимную проверку подлинности».

Смежные вопросы