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,

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

17 ответов

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

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

  1. IIS Manager → Сайты → Сайт
  2. Дважды щелкните "Аутентификация"
  3. Выберите анонимную аутентификацию
  4. На панели "Действия" выберите "Изменить".
  5. Выберите "Пул приложений" и нажмите "ОК".

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

Если вы используете IIS 7, сделайте что-то вроде этого:

  1. Выберите свой сайт.
  2. Нажмите на страницы ошибок.
  3. Изменить настройки функции.
  4. Выберите подробные ошибки.

Наслаждаться.

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

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

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

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

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

У меня была эта проблема в IIS 10. Вот как я ее исправил.

  1. Откройте IIS
  2. Выберите сайт
  3. Открытая аутентификация
  4. Изменить анонимную аутентификацию
  5. Выберите идентификатор пула приложений

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

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

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

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

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

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

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

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

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

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

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

 <httpErrors existingResponse="PassThrough" />

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

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

Папка была открыта для общего доступа, и было предоставлено разрешение Authenticated Users, что решило мою проблему.

Щелкните правой кнопкой мыши основной каталог, в котором находятся файлы проекта.

Свойства->Безопасность->Правка->Добавить->тип IIS_IUSRSи нажмите кнопку «Проверить имена».

Результат будет выглядеть ComputerUsername\IIS_IUSRS

Например: DESKTOP-M0R6PVF\IIS_IUSRS

а затем нажмите кнопку «ОК».

Как показали многие ответы, ошибка может быть вызвана множеством причин. В моем случае это было связано с правилами авторизации: они были добавлены гораздо позже, после развертывания приложения. Эта функция IIS включена как компонент Windows (Всемирные веб-службы->Безопасность->Авторизация URL).

Виной тому был этот конкретный раздел внутри web.config:

      <system.webServer>
  <security>
    <authorization>
      <remove users="*" roles="" verbs="" />
      <add accessType="Deny" users="?" />
      <add accessType="Deny" users="user1,user2" />
      <add accessType="Allow" users="*" />
    </authorization>
  </security>
</system.webServer>

Таким образом, рекорд для users="?"также заблокировал доступ к пути с анонимной аутентификацией, поскольку он унаследовал правила по умолчанию. Однако в IIS вы можете перейти к определенной папке/файлу, доступ к которому должен быть анонимным, и выбрать правила авторизации:

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

В моем случае, что заставило его работать, так это изменение идентификатора анонимного пользователя с конкретного пользователя (IUSR) на идентификатор пула приложений. Достаточно странно, потому что другие сайты используют IUSR конкретного пользователя и работают нормально.

Вы можете нажать F4 в веб-проекте, чтобы открыть окно «Свойства проекта».

Затем убедитесь, что анонимная аутентификация включена в разделе «Сервер разработки»:

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

У меня была проблема с доступом к веб-сайту, и я просто не мог заставить работать аутентификацию Windows. В конце концов, это была проблема с правами доступа к папке, а не с конфигурацией ASP.NET, и когдаEveryone пользователю были предоставлены разрешения, он начал работать.

В моем случае,
Мое приложение разработано в MVC и мой класс контроллера дома был украшен [Authorize] который был причиной этой проблемы.
Поэтому я удалил его, потому что мое приложение не требует никакой аутентификации.

Другие вопросы по тегам