У меня возникли проблемы с развертыванием моего приложения, и во время устранения неполадок я обнаружил Web.Config
файл в Views
папке. Пытаясь сузить круг возможных источников для моей проблемы, я попытался выяснить назначение этого файла ~ Web.Config`, но не смог найти много информации.
Итак, в основном мои вопросы:
- Что делает
Web.config
файл вViews
папке проекта MVC? - Это обязательно?
В веб-формах Asp.Net я считаю, что для использования отдельного файла web.config в папке эта папка должна быть установлена как виртуальная папка в IIS. Так ли это в MVC (т.е. Views
нужно ли настраивать папку как виртуальную)?
asp.net-mvc
web-config
Ола Карлссон
источник
источник
Ответы:
Нет, вам не нужно настраивать виртуальную папку из-за этого дополнительного файла 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"/>
источник
Он настраивает компилятор для представлений, таких как импорт пространств имен, и заставляет папку представлений возвращать 404.
источник
Файл web.config в папке представлений предназначен для выполнения некоторых специальных настроек, которые вы хотите применить к страницам внутри папки представления.
Как настройки конфигурации, такие как: строка подключения / настройки приложений и т. Д.
но это будет применимо только к этой папке, а остальная часть проекта получит настройки из web.config, находящегося в корне.
Особенно, когда вы используете концепцию области, для каждой области будет отдельная папка, содержащая отдельный файл web.cfg, где вы можете применить отдельные настройки для каждой области.
источник
Это если вы хотите переопределить что-то, упомянутое в верхней части
web.config
, т.е. если вы хотите настроить что-то в пределахViews
папки.источник