Почему я получаю сообщение об ошибке 401.2 / Доступ запрещен при развертывании моего приложения MVC 3 в IIS 7.5?

Я пытаюсь развернуть приложение ASP.NET MVC 3 в системе Windows 2008 R2. Я запустил установщик веб-платформы, чтобы установить биты MVC 3 и базовые настройки IIS. Я создал новую папку C: \ Website, затем создал новый веб-сайт и указал его на эту папку.

Я вижу, что есть новый отступ пула приложений, ApplicationPoolIdentity, который отличается от IIS 6 (и представляет собой «особую» учетную запись пользователя, которая на самом деле недоступна на вкладке безопасности в папке). Я вручную назначил разрешение для папки C: \ Website, введя учетную запись «IIS AppPool \ DefaultAppPool» и предоставив ей чтение и выполнение / список содержимого папки / доступ для чтения (в частности: папка Traver / файл excute, папка списка / чтение данных, Чтение атрибутов, Чтение расширенных атрибутов, Чтение разрешений).

Пул приложений для этого веб-сайта настроен для v4 платформы .NET, интегрированный конвейер.

В аутентификации IIS включена «Анонимная аутентификация».

На моем веб-сайте в файле web.config указан режим проверки подлинности = "Windows". Это первый раз, когда я действительно использовал проверку подлинности Windows. Если это важно, веб-сервер является частью домена.

Когда я пытаюсь получить доступ к сайту, я получаю сообщение об ошибке «Доступ запрещен», 401.2. Я подумал, что это может быть связано с настройкой проверки подлинности Windows, поэтому я изменил Интернет.config и установите для режима аутентификации значение Нет. Я получаю ту же ошибку.

Если я захожу на сайт IIS / Authentication и включаю Windows Authentication, мне предлагается ввести имя пользователя / пароль. Если я ввожу свои учетные данные, он работает. Однако меня беспокоит, что он работает только потому, что фактически выдает себя за меня на сервере (и у меня есть доступ ко всему). Мне действительно не нужно / не нужно выдавать себя за другое лицо на веб-сайте - я использую только проверку подлинности Windows, поэтому нам не нужно поддерживать два набора учетных записей. Веб-сайт проверяет только роли, участником которых является пользователь, чтобы выборочно отображать / скрывать контент. Страница по умолчанию на веб-сайте не имеет атрибутов [Авторизовать], установленных на контроллере. настраивается в файле web.config.

Дополнительный вопрос - зачем мне вообще запрашивать имя пользователя / пароль? Разве вызов / ответ не произойдет автоматически и не будет запрашиваться только в том случае, если аутентификация не удалась?

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

Я искал ошибку и уже пытался исправить некоторые из них, например, я безуспешно пытался сбросить конфигурацию ASP.NET из командной строки, используя: aspnet_regiis -i.

Решено

Мне удалось заставить это работать. В конфигурации веб-сайта есть опция «.NET-авторизация». Это было настроено так, чтобы запрещать всем анонимным пользователям. Я удалил это правило, а затем добавил правило, разрешающее всем анонимным пользователям. Теперь я мог заходить на сайт, не входя в систему.Затем я вошел в проверку подлинности IIS, включил проверку подлинности Windows и отключил анонимную проверку подлинности.

Internet Explorer передает учетные данные без запроса. Firefox запрашивает учетные данные. Для этого есть параметр конфигурации:

  • Откройте Firefox
  • Перейдите по адресу: about: config (и согласитесь, чтобы продолжить)
  • Фильтр для: network.automatic
  • Дважды щелкните network.automatic- ntml-auth.trusted-uris
  • Добавьте свой сайт (несколько сайтов могут быть разделены запятыми). Включите http: // часть.

На машине, на которой я тестирую, нет Chrome, но, похоже, на моем разработчике он работает нормально. машина.

9
задан Paul Mrozowski 2 January 2012 в 11:58
поделиться