2015-05-13 6 views
4

Я не могу понять это для жизни меня. Я пытаюсь получить имя текущего пользователя, вошедшего на Windows, используя следующую строку:Получение имени текущего пользователя Windows, возвращающего «IIS APPPOOL/Sitename»

string user = System.Security.Principal.WindowsIdentity.GetCurrent().Name.ToString(); 

Когда я запускаю эту строку после публикации и открытия ее через IIS, он дает мне имя «IIS AppPool/Название сайта". Однако, когда я запускаю это через отладчик Visual Studio 2013, появляется правильное имя.

ответ

2

вам нужно включить auth/imersonation на сайте ASP.NET, иначе он будет запущен в контексте любой учетной записи, настроенной для пула приложений.

https://msdn.microsoft.com/en-us/library/ff647405.aspx

<system.web> 
    ... 
    <authentication mode="Windows"/> 
    <identity impersonate="true"/> 
    ... 
</system.web> 
+1

Я сделал это, однако, когда я перезагружаю свои страницы, я получаю HTTP-ошибку 500.24. Кроме того, когда я проверяю параметры аутентификации IIS для сайта, он показывает, что анонимная аутентификация и аутентификация ASP.NET автоматически включаются, когда я меняю свой Web.config на это. И когда я отключил аутентификацию ASP.NET и включил аутентификацию Windows, я все равно получаю ту же ошибку. –

1

Я возился с конфигой, IIS настройки и строки ... но я думаю, что эта линия, что мне нужно использовать:

string user = System.Web.HttpContext.Current.User.Identity.Name; 

Кажется чтобы вернуть домен/имя пользователя, которое я могу использовать вместо этого. Похоже на альтернативное решение.

+1

Это работает под IISExpress, но, вероятно, не под IIS, когда он вернет имя, в котором работает приложение. – stevieg

+0

Кто-нибудь получил ответ на это? IIS 7.5 и ASp.net 4.5 –

0

Все упомянутые в других ответах истинны, плюс к этому:

В диспетчере IIS выберите Основные параметры.

В окне Edit Application нажмите кнопку Подключиться как ...

Выберите Application User (пройти через проверку подлинности). Не используйте конкретного пользователя, потому что это будет идентификация.

0

Основание на моем тесте в IIS, имеющем проверку подлинности Windows, разрешает, а не олицетворяет на web.config; System.Web.HttpContext.Current.User.Identity.Name; верните мне текущий пользователь, не являющийся пользователем пула приложений, и System.Security.Principal.WindowsIdentity.GetCurrent().Name.ToString() верните пользователя пула приложений.

Надеюсь, что эта помощь!

0

Нажмите на название проекта и нажмите клавишу F4, и откроется окно свойств проекта:

  1. Включить проверку подлинности Windows

  2. Отключить анонимная проверка подлинности

  3. Добавить <identity impersonate="true"> в web.config

Теперь, разверните свой код, он должен работать нормально.