web-dev-qa-db-fra.com

Pourquoi .NET génère-t-il deux fichiers web.config dans une application MVC asp.net?

Je suis nouveau dans MVC 3. Quelle est la raison d'utiliser deux fichiers web.config?

enter image description here

Quelle est la différence entre ces 2 fichiers web.config et quel est le but de chacun et sa fonction?

36
Datta

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 () ??!"

20
Céryl Wiltink

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:

  • Les demandes de blocage tentant d'accéder directement aux vues rasoir et aspx (celles-ci doivent être servies par les contrôleurs via les routes appropriées). UNE 404 la réponse est configurée pour de telles demandes directes, par exemple.
<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
  • Pour configurer espaces de noms d'importation par défaut pour les pages de visualisation, qui autrement devraient être explicitement ajoutées via 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" />
    ...
  • Pour configurer le filtre anti-xss 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.
 -->
53
StuartLC

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.

5
Sunny_Sid

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.

5
Sunny_Sid

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:

Présentation de la configuration ASP.NET

Hiérarchie et héritage du fichier de configuration ASP.NET

3
e4rthdog

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:

Transformations Web.config

Syntaxe de transformation

1
Fernando Arce