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

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

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

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

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

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

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

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

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

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

< Сильный > Решенный

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

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

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

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

9
Paul Mrozowski 31 Дек 2011 в 19:14
1
Если они позволят ответить на ваш собственный вопрос, я бы поддержал ваше решение. Решил мою проблему.
 – 
Brad Patton
24 Май 2012 в 19:24

1 ответ

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

0
Paweł Staniec 31 Дек 2011 в 21:04