MVC "Доступ запрещен" с использованием IIS

У вас серьезные проблемы с получением сообщения "Отказано в доступе":

Сообщение об ошибке 401.2: Неавторизованный. Ошибка входа в систему из-за конфигурации сервера. Убедитесь, что у вас есть разрешение на просмотр этого каталога или страницы на основе предоставленных вами учетных данных и методов проверки подлинности, включенных на веб-сервере. Обратитесь к администратору веб-сервера за дополнительной помощью.

Как я сюда попал

Работа под Windows 7, Professional. Система, использующая AD для входа в систему (имя: SYSTEM\login). Создал новое приложение MVC 3 в VS2010 под названием XYZ. Не внесены изменения в код. Установите файлы с привязкой для System.Web.mvc и System.Web.Helpers для копирования в Local = true.

Что я попытался

  • Опубликован XYZ для размещения файловой системы "C:/websites/XYZ".
  • Добавлен "abc.xyz.com" для размещения файла с IPA 127.0.0.1.
  • Создал новый сайт в диспетчере IIS под названием "XYZ" и установил физический путь к пути публикации приложения (C:/websites/XYZ).
  • Связанный XYZ с abc.xyz.com:80.
  • Гарантированный пул приложений для сайтов .NET 4.0, Integrated.
  • Идентификатор пула приложений установлен в ApplicationPoolIdentity.
  • При физическом размещении опубликованных файлов щелкните правой кнопкой мыши папку и перейдите в "Свойства- > Безопасность" и добавьте IUSR в список пользователей, предоставляя полный контроль.
  • Проект MVC имеет режим аутентификации, установленный на "None".
  • Аутентификация для сайта отключена анонимным доступом, а все остальные отключены.
  • Я также включил просмотр каталогов для сайта.

После всего этого, я reset веб-сайт, обновить браузер и reset IIS. Я все еще получаю это сообщение, когда иду на abc.xyz.com. Я понятия не имею, что я должен проверить далее.

Что мне нужно

Может ли кто-нибудь помочь мне с этим? Я выполнил несколько поисков Google с комбинациями "запрет доступа к локальному хосту mvc" и т.д., И я внедрил предложения, которые я нашел.

Ответ 1

Fixed

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

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

К сожалению, каждый раз, когда я опубликовал я reset аутентификацию. Вероятно, это была настоящая причина, по которой у меня было так много проблем. Урок выучен. Я смущен.

Еще одна вещь, которую я не смог прояснить, заключалась в том, что я использую IIS 7.5.

Ответ 2

Добавьте это в файл web.config.

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
    <!-- rest of config -->
</system.webServer>

Надеюсь, это поможет.:)

Ответ 3

Если вы хотите избежать копирования файлов, например:

  • Используйте публичные профили и трансформацию в этом случае:

Мой блок dev:

<authentication mode="None" xdt:Transform="Replace"/>
  <authorization xdt:Transform="Replace">
  </authorization>

Производство:

<authentication mode="Windows" xdt:Transform="Replace"/>
<authorization xdt:Transform="Replace">
  <deny users="?" />

Ответ 4

При создании вашего приложения MVC одним из вариантов является создание приложения "Интранет". Это включит аутентификацию "Windows" по умолчанию внутри Web.config.

При публикации такого проекта в IIS вам необходимо включить проверку подлинности Windows для своего приложения в консоли управления IIS. Возможно, вам также придется отключить анонимную проверку подлинности.

Ответ 5

Я получаю ошибку, потому что это строки с помощью web.config

https://www.asp.net/visual-studio/overview/2013/using-browser-link

<appsettings>
    <add key="vs:EnableBrowserLink" value="false"></add>
</appsettings>
<system.web>
  <compilation debug="false" targetFramework="4.5" />
</system.web>