Подтвердить что ты не робот

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

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

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

Кто может помочь? Или знает, где я могу найти настройки из центра разработки визуальной студии, поэтому я могу проверить, что неправильно в IIS?

4b9b3361

Ответ 1

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

Я предлагаю прочитать сообщение в блоге Скотта Гатри Рецепт: включение проверки подлинности Windows в веб-приложении ASP.NET для интрасети

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

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

<authentication mode="Windows" />

<authorization>
   <deny users="?"/>
</authorization>

Ответ 2

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

enter image description here

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

Ссылаться на

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

Ответ 3

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

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

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

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

4.На панели "Аутентификация" выберите "Анонимная аутентификация" и нажмите "Отключить". enter image description here

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

Ссылка

Ответ 4

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

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

Ответ 5

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

Однако файл настроек IISExpress.config имел:

<windowsAuthentication enabled="false">

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

Ответ 6

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

Этапы:

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

Пожалуйста, проверьте это и дайте мне знать обратную связь. Это сработало для меня. надеюсь, что это будет работать для вас также.. enter image description here

Ответ 7

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

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

Ответ 8

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

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

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

Ответ 9

Как сообщает @PaulTheCyclist, если по умолчанию включена анонимная аутентификация IISExpress, проверка подлинности Windows отключена.

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