HttpContext.Current.User.Identity.Name пусто

У меня есть приложение Silverlight (с использованием MVC), и когда я строю в Visual Studio, используя Центр разработки Visual Studio, проблем нет, HttpContext.Current.User.Identity.Name имеет значение

Но когда я использую тот же проект с IIS 7.5 (я использую Windows 7), HttpContext.Current.User.Identity.Name остается пустым

Любой, кто может помочь? Или знает, где я могу найти настройки из Центра разработки визуальной студии, чтобы я мог проверить, что не так в IIS?


person Jordy    schedule 15.10.2009    source источник
comment
Проверьте настройки аутентификации. HttpContext.Current.User — это IPrincipal, обертывающий текущего пользователя — будь то пользователь Windows, участник безопасности .NET Forms, участник Passport или настраиваемый участник пользователя из вашего собственного проекта. Я подозреваю, что IIS7 разрешает анонимную аутентификацию, тогда как Visual Studio по какой-то причине работает как аутентифицированный пользователь. Какое значение .Name возвращается в Visual Studio и каковы параметры проверки подлинности на вашем сайте IIS?   -  person Dylan Beattie    schedule 15.10.2009
comment
.Name в Visual Studio возвращает lapjordy\\Jordy (мое имя для входа в Windows). .Name в IIS возвращает (пустая строка). Я отключил анонимную аутентификацию в IIS и включил аутентификацию Windows, но затем браузер запрашивает у меня учетные данные Windows. .. Единственное, чего я хочу, это чтобы приложение (silverlight) давало мне имя моего текущего пользователя Windows (без запроса браузером моего имени пользователя --> см. изображение)   -  person Jordy    schedule 15.10.2009
comment


Ответы (11)


Я боролся с этой проблемой в последние несколько дней.

Я предлагаю прочитать сообщение в блоге Скотта Гатри Web-application.aspx" rel="nofollow noreferrer">Рецепт: включение проверки подлинности Windows в веб-приложении ASP.NET в интрасети

Для меня проблема заключалась в том, что хотя у меня была включена проверка подлинности Windows в IIS и у меня был <authentication mode="Windows" /> в разделе <system.web> web.config, я не предотвращал анонимный доступ. Эта последняя часть была ключевой. Необходимо запретить анонимный доступ, чтобы браузер отправлял учетные данные.

Вы можете либо настроить IIS в панели управления, чтобы ваш сайт (или компьютер) использовал аутентификацию Windows и запрещал анонимный доступ, либо вы можете добавить следующее в свой web.config в разделе system.web:

<authentication mode="Windows" />

<authorization>
   <deny users="?"/>
</authorization>
person Bryan Bedard    schedule 28.03.2011
comment
У меня сработало, хотя мой Identity.Name периодически пустовал, от секунды к секунде. Не знаю, почему, было бы интересно, если бы кто-нибудь мог объяснить? - person Ronnie; 17.03.2016
comment
если я установлю это в web.config, я больше не могу получить доступ к странице, говорит несанкционированный, используя Visual Studio - person aero; 01.07.2019
comment
Вы находитесь в домашней сети или в рабочей сети с Active Directory? Я думаю, что это работает только с Active Directory (домены). В моей домашней сети я также получаю несанкционированную ошибку с той же конфигурацией. - person Bryan Bedard; 04.07.2019

Это может решить проблему (это помогло мне). В IIS Express измените значения свойств проекта «Анонимная аутентификация» и «Аутентификация Windows». Для этого, когда проект выбран, нажмите F4, а затем измените эти свойства.

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

Если вы развертываете его локально в IIS, убедитесь, что на локальных компьютерах включена функция «Аутентификация Windows», а «Анонимная аутентификация» отключена.

Ссылаться на

https://grekai.wordpress.com/2011/03/31/httpcontext-current-user-identity-name-is-empty/

person digitally_inspired    schedule 05.04.2018
comment
Выделен акцент на проекте, нажмите F4. Это сделало это для меня. Странно, что этого нет на другом экране свойств проекта. - person D. Kermott; 12.05.2020
comment
Вы спасли мою жизнь! - person sandy; 23.11.2020
comment
сэкономил мне много часов работы - person Bruno Souza; 25.06.2021

В дополнение к "ответил Брайан Бедард 28 марта 2011, в 12:27"

В случае, если решение не работает, вам необходимо включить аутентификацию Windows в диспетчере iss. Как это сделать:

1. Чтобы запустить диспетчер IIS из диалогового окна «Выполнить», выполните следующие действия. В меню «Пуск» щелкните «Все программы», щелкните «Стандартные», а затем щелкните «Выполнить». В поле «Открыть» введите inetmgr и нажмите «ОК».

2. На панели «Подключения» разверните имя сервера, разверните «Сайты» и перейдите на уровень в панели иерархии, который вы хотите настроить, а затем щелкните веб-сайт или веб-приложение. 3. Перейдите к разделу IIS на главной панели и дважды щелкните Проверка подлинности.

4. На панели «Аутентификация» выберите «Анонимная аутентификация», а затем нажмите «Отключить». введите описание изображения здесь

  1. На панели Аутентификация выберите Аутентификация Windows, а затем нажмите Включить.

Справочник

person Dmitry Toder    schedule 09.09.2015
comment
а также, если вы затем получите 500.19, вы можете попробовать отредактировать applicationHost.config. ctrl+f windowsAuthentication и убедитесь, что overrideModeDefault="Allow". Возможно, вам придется сделать то же самое для анонимной аутентификации, Здесь представлена ​​дополнительная информация от Microsoft. - person user875234; 18.03.2019

У меня тоже недавно была эта проблема. Работа с новым клиентом, попытка запустить старое приложение веб-форм из Visual Studio с помощью IISExpress с использованием проверки подлинности Windows. Для меня web.config был правильно настроен

Однако в файле настроек IISExpress.config было:

<windowsAuthentication enabled="false">

Учетная запись пользователя, под которой вошел разработчик, была очень новой, поэтому маловероятно, что ее редактировали. Простое исправление оказалось, измените это на enabled=true и все заработало как надо.

person PaulTheCyclist    schedule 28.08.2014
comment
Это ответ, который я искал. Однако мои настройки IISExpress хранятся в файле applicationhost.config. - person Nova; 23.11.2014

Кроме того, особенно если вы разработчик, убедитесь, что вы действительно подключаетесь к серверу IIS, а не к IIS Express, который поставляется с Visual Studio. Если вы отлаживаете проект, иногда так же просто, если не проще, думать, что вы подключены к IIS, хотя на самом деле это не так.

Даже если вы включили проверку подлинности Windows и отключили анонимную проверку подлинности в IIS, это не повлияет на вашу симуляцию в Visual Studio.

person Mishax    schedule 04.07.2014

Отключение всех других параметров на вкладке аутентификации iis, кроме аутентификации Windows, решило мою проблему. Пожалуйста, проверьте..

Шаги:

  1. Откройте iis на своей машине
  2. Выберите свое приложение из пула приложений
  3. Нажмите на вариант аутентификации
  4. Отключите все остальные параметры, кроме проверки подлинности Windows (анонимная проверка подлинности должна быть отключена).

Пожалуйста, проверьте это и дайте мне знать обратную связь. Это сработало для меня. надеюсь, что это сработает и для вас. .com/iNBXw.png" alt="введите здесь описание изображения">

person Adarsh    schedule 01.05.2018

Браузер обнаружит ваше имя пользователя только в том случае, если сервер IIS находится в том же домене и настройки безопасности в вашей групповой политике разрешают это.

В противном случае вам придется предоставить ему учетные данные, но если он не находится в том же домене, он не сможет вас аутентифицировать.

person cjk    schedule 15.10.2009
comment
как разместить сервер IIS и браузер (или приложение?) в одном домене? и нужно ли мне устанавливать эти групповые политики? у вас есть пример? надеюсь, вы можете помочь! :) - person Jordy; 16.10.2009

Помимо всех очевидных причин, упомянутых ранее, может быть еще одна: вы не разместили атрибут Authorize поверх вашего контроллера, например:

[Authorize(Roles = "myRole")]
[EnableCors(origins: "http://localhost:8080", headers: "*", methods: "*", SupportsCredentials = true)]
public class MyController : ApiController

По крайней мере, это то, что сработало для меня.

person cornhedgehog    schedule 06.03.2019

Как говорит @PaulTheCyclist, если использование анонимной аутентификации IISExpress включено по умолчанию, аутентификация Windows отключена.

Это можно изменить в том, что, как я уверен, раньше называлось PropertyPages (НЕ щелкните правой кнопкой мыши -> свойства). Выберите веб-проект

person waxingsatirical    schedule 05.05.2017

Попробуйте включить обычную проверку подлинности и отключить другие проверки подлинности в IIS, затем попробуйте запустить приложение. Приложение запросит учетные данные Windows. Введите то же самое, и приложение должно получить имя в разделе HttpContext.Current.User.Identity.Name.

person user1531912    schedule 24.06.2020

Я столкнулся с этой проблемой, когда режим аутентификации не был установлен при создании проекта. Итак, это сработало при создании нового проекта с аутентификацией, установленной в режиме Windows в первоначальных настройках.

person PrincyLora21    schedule 28.04.2021