Что делает файл Web.Config в папке представлений проекта MVC
У меня возникли проблемы с развертыванием моего приложения и при устранении неполадок я наткнулся на Web.Config
файл в папке Views
. В попытке сузить возможности источников к моей проблеме я попытался выяснить цель этого файла Web.Config, но не могу найти много информации.
Итак, в основном мои вопросы:
- Что делает файл
Web.Config
в папке Views
проекта MVC?
- Требуется ли?
В веб-формах Asp.Net я считаю, что для использования отдельного файла web.config в папке эта папка должна быть установлена как виртуальная папка в IIS. Это в случае MVC (т.е. Папка Views
должна быть настроена как виртуальная папка)?
Ответы
Ответ 1
Нет, вам не нужно настраивать виртуальную папку из-за этого дополнительного файла web.config.
Файл web.config существует в папках Views, чтобы предотвратить доступ к вашим представлениям любым другим способом, кроме вашего контроллера. В шаблоне проектирования MVC контроллеры должны направлять запросы и возвращать визуализированный вид вызывающему клиенту.
Другими словами, ваше мнение по адресу www.mydomain.com/MySuperController/AwesomeAction1/SweetPage.aspx не должно быть напрямую доступно.
Если вы заглядываете в файл web.config, он фактически регистрирует HttpNotFoundHandler
для всех путей и глаголов:
<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
Или, в IIS 7 это может выглядеть как
<add name="BlockViewHandler" path="*.aspx" verb="*"
preCondition="integratedMode" type="System.Web.HttpNotFoundHandler"/>
Ответ 2
Он настраивает компилятор для представлений, таких как импорт пространств имен и делает папку представлений возвращением 404.
Ответ 3
Это, если вы хотите переопределить что-то, упомянутое в верхнем web.config
, т.е. если вы хотите настроить что-то в области Views
.
Ответ 4
Файл web.config в папке представлений должен сделать некоторые специализированные параметры, которые вы хотите применить к страницам внутри папки просмотра.
Подобно настройкам конфигурации, например: строка подключения/настройки и т.д.
но это будет применимо только к этой папке, и остальная часть проекта заберет настройки из web.config, присутствующие в корне.
В частности, при использовании концепции области будет отдельная папка для каждой области, содержащей отдельный файл web.cfg, где вы можете применять отдельные настройки для каждой области.