Je suis nouveau dans MVC 3. Quelle est la raison d'utiliser deux fichiers web.config?
Quelle est la différence entre ces 2 fichiers web.config et quel est le but de chacun et sa fonction?
Je voudrais ajouter à cela que le Web.Config dans le dossier/Views est un excellent (sinon le) moyen de déclarer des espaces de noms spécifiquement pour vos vues. Dans une application Web, il est très possible que presque chaque vue obtienne un ViewModel (au lieu de votre modèle actuel) lui est passé. Déclarer l'espace de noms complet après @model ou avoir le même @using App.Web.Viewmodels devient fastidieux. De cette façon, tous les modèles de vue sont automatiquement disponibles et vous devez faire un travail supplémentaire pour obtenir les vrais modèles dans le champ d'application, qui devraient ensuite déclencher immédiatement quelques alarmes.
De plus, une application peut généralement obtenir un grand nombre de méthodes d'extension spécifiquement à utiliser dans la vue (l'aide HTML saute à l'esprit). Il est logique de définir l'espace de noms de cette classe d'extension dans /Views/Web.Config. De cette façon, vous ne vous demandez jamais "Pourquoi Cant IntelliSense ne trouve pas ma méthode @ Html.ImageLink () ??!"
Ceci est un exemple de web.config
héritage de fichier. De MSDN
Vous pouvez distribuer les fichiers de configuration ASP.NET dans vos répertoires d'application pour configurer les applications ASP.NET dans une hiérarchie d'héritage. Cette structure vous permet d'atteindre le niveau de détail de configuration dont vos applications ont besoin aux niveaux de répertoire appropriés sans affecter les paramètres de configuration aux niveaux de répertoire supérieurs.
Plus précisément, pour les projets MVC, le web.config
dans le sous-répertoire View
est utilisé pour personnaliser le .cshtml
/.aspx
des dossiers. Vous pouvez utiliser web.config
fichiers dans les sous-dossiers pour étendre, remplacer et supprimer les paramètres hérités de la racine de l'application, et remonter la hiérarchie, par exemple Jusqu'à machine.config
Configurations courantes dans le /Views/web.config
comprendre:
404
la réponse est configurée pour de telles demandes directes, par exemple.<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
using
. Vous pouvez ajouter des espaces de noms pour vos assemblys personnalisés courants (par exemple, des extensions d'assistance HTML personnalisées), par exemple. <namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
...
RequestValidation
pour MVC. Le commentaire ajouté dans la configuration explique mieux cela:<!--
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.
-->
Le fichier web.config existe dans les dossiers Vues pour empêcher l'accès à vos vues par tout autre moyen que votre contrôleur. Dans le modèle de conception MVC, les contrôleurs sont censés acheminer les demandes et renvoyer une vue rendue au client appelant.
signifie localhost9999: //Home/Index.cshtml ne doit pas être directement accessible.
La vue a sa propre configuration. Si vous avez affaire à des zones, vous découvrirez plus d'une configuration.
En fait, le point est que Web.Config de la vue est pour la configuration spécifique de la vue telle que le blocage de l'accès direct aux vues.
EDIT 1: Plus d'explications comme demandé dans les commentaires.
Le fichier web.config existe dans les dossiers Vues pour empêcher l'accès à vos vues par tout autre moyen que votre contrôleur. Dans le modèle de conception MVC, les contrôleurs sont censés acheminer les demandes et renvoyer une vue rendue au client appelant. Cela signifie que localhost9999: //Home/Index.cshtml ne doit pas être directement accessible.
La configuration ASP.NET est stockée dans web.config
fichiers (fichiers XML).
Ces fichiers peuvent apparaître dans de nombreux répertoires d'une application ASP.NET. Ils aident à configurer le comportement des applications avant même le déploiement, en fonction du fait que vous pouvez les modifier avec le bloc-notes. Ils gardent également séparés votre code et vos données de configuration.
Chaque web.config
le fichier s'applique au répertoire dans lequel il existe et à TOUS les sous-répertoires enfants. Web.config
les fichiers du répertoire enfant peuvent être utilisés pour remplacer le web.config
fichier.
Vous avez la possibilité de remplacer des fichiers ou des répertoires individuels à l'aide de l'élément location. Voir LIEN
Les règles d'héritage des paramètres sont des foillows.
Il y a d'abord le fichier machine.config qui se trouve généralement dans systemroot\Microsoft.NET\Framework\versionNumber\CONFIG\
Dans le même répertoire existe un fichier web.config "maître" qui définit les paramètres de TOUTES les applications asp.net qui s'exécutent sur la machine.
Viennent ensuite vos fichiers web.config qui existent dans votre application.
Plus d'informations:
En plus de distribuer vos paramètres pour votre projet de manière simple, vous pouvez le tourner au moment de l'exécution pour créer une publication. Une main sur le volant. Voir: