Подтвердить что ты не робот

Почему .NET генерирует два файла web.config в приложении MVC asp.net?

Я новичок в MVC 3. В чем причина использования двух файлов web.config?

enter image description here

В чем разница между этими 2 файлами web.config и какова цель каждой и ее функции?

4b9b3361

Ответ 1

Я хотел бы добавить к этому, что Web.Config в папке /Views - отличный (если не тот) способ объявить пространства имен, специально предназначенные для ваших просмотров. В веб-приложении очень возможно почти каждое представление получает ViewModel (вместо вашей фактической модели), переданный ему. Объявление полного пространства имен после @model или наличие того же @using App.Web.Viewmodels становится утомительным. Таким образом, все режимы просмотра автоматически доступны, и вам нужно выполнить дополнительную работу, чтобы получить реальные модели в области, которые затем должны установить некоторые будильники сразу.

Кроме того, как правило, приложение может получить множество методов расширения, специально предназначенных для использования в представлении (подсказка HTML-подсказок). Имеет смысл определить пространство имен для этого класса расширения в /Views/Web.Config. Таким образом, вы никогда не задаетесь вопросом: "Почему не удается IntelliSense найти мой метод @Html.ImageLink()?"

Ответ 2

Это пример наследования файлов web.config. Из MSDN

Вы можете распространять файлы конфигурации ASP.NET во всех каталогах приложений для настройки приложений ASP.NET в иерархии наследования. Эта структура позволяет вам достичь уровня детализации конфигурации, который требуется вашим приложениям на соответствующих уровнях каталогов, не влияя на настройки конфигурации на более высоких уровнях каталогов.

В частности, для проектов MVC web.config в подкаталоге View используется для адаптации файлов .cshtml/.aspx. Вы можете использовать файлы web.config во вложенных папках для расширения, переопределения и удаления настроек, унаследованных от собственного корня приложения, и дальнейшей иерархии, например. до machine.config

Общие конфигурации в /Views/web.config включают:

  • Блокирование запросов, пытающихся напрямую получить доступ к бритвам и представлениям aspx (их необходимо обслуживать с контроллеров через соответствующие маршруты). Ответ на 404 настроен для таких прямых запросов, например.

<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
  • Чтобы настроить пространства имён импорта для страниц просмотра, которые в противном случае должны были бы быть явно добавлены через using. Вы можете добавить пространства имен для общих пользовательских сборок здесь (например, пользовательские html-вспомогательные расширения), например.

  <namespaces>
    <add namespace="System.Web.Mvc" />
    <add namespace="System.Web.Mvc.Ajax" />
    <add namespace="System.Web.Mvc.Html" />
    ...
  • Чтобы настроить фильтр anti-xss RequestValidation для MVC. Комментарий, добавленный в конфигурацию, объясняет это лучше всего:

<!--
    Enabling request validation in view pages would cause validation to occur
    after the input has already been processed by the controller. By default
    MVC performs request validation before a controller processes the input.
    To change this behavior apply the ValidateInputAttribute to a
    controller or action.
 -->

Ответ 3

Файл web.config существует в папках Views, чтобы предотвратить доступ к вашим представлениям любым другим способом, кроме вашего контроллера. В шаблоне проектирования MVC контроллеры должны направлять запросы и возвращать визуализированный вид вызывающему клиенту.

означает localhost9999://Home/Index.cshtml не должен быть напрямую доступен.

Ответ 4

У просмотра есть своя конфигурация. Если вы имеете дело с областями, тогда вы узнаете о нескольких конфигурациях.

Фактически Дело в том, что представление Web.Config предназначено для просмотра специфической конфигурации, такой как блокирование прямого доступа к представлениям

Ответ 5

Конфигурация ASP.NET хранится в файлах web.config (файлы XML).

Эти файлы могут отображаться во многих каталогах в приложении ASP.NET. Они помогают настроить поведение приложения еще до развертывания, основываясь на том, что вы можете редактировать их с помощью блокнота. Также они разделяют ваш код и ваши данные конфигурации.

Каждый файл web.config применяется к существующей директории и ВСЕ дочерним подкаталогам. web.config файлы в дочернем каталоге могут использоваться для переопределения родительского файла web.config.

У вас есть возможность переопределить отдельные файлы или каталоги с помощью элемента location. См. ССЫЛКА

Правила наследования настроек - это как foillows.

Сначала есть файл machine.config, который обычно находится в systemroot\Microsoft.NET\Framework\versionNumber\CONFIG\

В том же каталоге существует файл 'master' web.config, который определяет параметры для всех приложений asp.net, которые запущены на машине.

Затем введите свои файлы web.config, которые существуют в вашем приложении.

Дополнительная информация:

Обзор конфигурации ASP.NET

Иерархия и наследование иерархии файлов ASP.NET