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>