I am new in MVC 3. What is the reason to use two web.config files?
What is difference between that 2 web.config files, and what is the purpose of each and its function?
This is an example of web.config
file inheritance. From MSDN
You can distribute ASP.NET configuration files throughout your application directories to configure ASP.NET applications in an inheritance hierarchy. This structure allows you to achieve the level of configuration detail that your applications require at the appropriate directory levels without affecting configuration settings at higher directory levels.
Specifically, for MVC projects, the web.config
in the View
subdirectory is used to tailor the .cshtml
/ .aspx
files. You can use web.config
files in subfolders to extend, override, and remove settings inherited from the app's own root, and further up the hierarchy, e.g. up to machine.config
Common configurations in the /Views/web.config
include:
404
response is configured for such direct requests, e.g.<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
using
. You can add namespaces for your common custom assemblies here (e.g. custom html helper extensions) e.g. <namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
...
RequestValidation
filter for MVC. The comment added in the config explains this best:<!--
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.
-->