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

401 Неавторизованный: доступ запрещен из-за недействительных учетных данных

Я использую IIS Express для развертывания приложения MVC4. Этот сайт отлично работает на одном компьютере. Но в Lan это дает мне ошибку 401.

<authentication mode="Forms">
    <forms loginUrl="~/" slidingExpiration="true" timeout="20">
    </forms>
</authentication>

В домашнем контроллере

[HttpPost]
[AllowAnonymous]        
public ActionResult Index(LoginModel model, string returnUrl)
{
}

Я запускаю сервер IIS из командной строки в режиме администратора. IIS отвечает на запрос с ошибкой 401.

Любая подсказка?

4b9b3361

Ответ 1

Я понимаю, что это более старая должность, но у меня была такая же ошибка в IIS 8.5. Надеюсь, это может помочь другому испытать ту же проблему (я не видел, чтобы моя проблема была изложена в других вопросах с похожим названием).

Все правильно настроилось с идентификатором пула приложений, но я продолжал получать эту ошибку. После многократного копания существует параметр, позволяющий анонимному пользователю использовать учетные данные идентификатора пула приложений или конкретного пользователя. По какой-то причине моя была дефолтом для конкретного пользователя. Изменение настройки для идентификатора пула приложений исправило проблему для меня.

  • Менеджер IIS → Сайты → Веб-сайт
  • Дважды щелкните "Аутентификация"
  • Выберите анонимную аутентификацию
  • На панели "Действия" выберите "Редактировать"
  • Выберите идентификатор пула приложений и нажмите ok

Надеюсь, это поможет кому-то еще некоторое время!

Ответ 2

Если вы используете IIS 7, выполните следующие действия:

  • Выберите свой сайт.
  • Нажмите на страницы с ошибкой.
  • Изменить настройки параметров.
  • Выберите подробные ошибки.

Enjoy.

Ответ 3

Убедитесь, что вы включили анонимную аутентификацию в iis следующим образом:

enter image description here

Ответ 4

В случае, если кто-то все еще ищет это, это решило проблему для нас:

Кому бы это ни помогло, это спасло мою жизнь...

IIS 7 было сложно выяснить, почему я получаю 401 - Unauthorized: доступ запрещен из-за недействительных учетных данных... пока я не сделал это...

  • Откройте IIS и выберите веб-сайт, вызывающий 401
  • Откройте свойство "Аутентификация" в заголовке "IIS"
  • Нажмите "Аутентификация Windows" и нажмите "Поставщики"
  • Для меня проблема заключалась в том, что Negotiate был выше NTLM. Я предполагаю, что какое-то рукопожатие происходит за кулисами, но я никогда не был аутентифицирован. Я переместил NTLM на самое верхнее место, а BAM установил его.

Вот ссылка, где это было найдено.

Ответ 5

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

В моем случае это не было настройкой IIS, это был контроллер, который не был [AllowAnonymous] украшен. Я использовал Render.Action/Html.Action в Layout.cshtml, и Пользователь был не аутентифицирован. Таким образом, макет попытался загрузить аутентифицированное действие в контексте UnAuthenticated.

Как только я обновил действие до AllowAnonymous, проблема исчезла, и вот что привело меня к этому.

Надеюсь, это поможет кому-то.

Ответ 6

У меня была аналогичная проблема сегодня. По какой-то причине мой запрос GET был в порядке, но запрос PUT не выполнялся для моей службы WCF WebHttp Service

Добавление следующего в Web.config решения проблемы

 <system.web>
  <authentication mode="Forms" />
 </system.web>

Ответ 7

Я столкнулся с этой ошибкой, когда создал пустой проект с папками MVC, а затем развернул приложение на сервере. Моя проблема заключалась в том, что я не определял аутентификацию в Web.config, поэтому все, что мне нужно было сделать, это добавить эту строку в тег system.web.

<system.web>
    <authentication mode="None"/>
</system.web>

Ответ 8

У меня возникла аналогичная проблема.

Папка была разделена и предоставлено разрешение на проверку подлинности пользователей, что позволило решить мою проблему.

Ответ 9

i столкнулся с той же проблемой в IIS 8.5. Рабочее решение для меня изменило IIS, чтобы отобразить подробные ошибки. См. Ответ от sna2stha. Но я думаю, что не рекомендуется отправлять подробные сообщения об ошибках в браузеры в производственных средах. Я добавил/изменил существующий атрибутResponse в разделе httpErrors-Section, поэтому IIS не обработал любой из оставшихся ответов Asp.net:

 <httpErrors existingResponse="PassThrough" />

Это работает для меня.