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
.
Любая подсказка?
Ответы
Ответ 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" />
Это работает для меня.