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

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

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

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

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

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

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

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

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

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

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

Решено

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

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

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

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

1 Ответ

0 голосов
/ 31 декабря 2011

Убедитесь, что разрешения вашей файловой системы правильные. Если они пытаются удалить WebMatrix.Data.dll и WebMatrix.WebData.dll, развернутые в каталоге bin приложения, - это помогло мне, я помню, у меня были те же проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...