routage ASP.NET MVC et les données statiques (ie. images, scripts, etc.)
-
30-09-2019 - |
Question
Si j'ai une demande d'une ressource dans mon ASP.NET MVC1 (ou 2) application web pour une ressource statique, disons ... une image ou un fichier javascript ou un fichier css ... Le cadre .NET essayer de voir si la demande correspond à la liste des itinéraires ... et finalement ne peut pas trouver un contrôleur pour cela?
par exemple.
Ressource: /Content/Images/Foo.png
Est-ce aller à la demande dans ma liste d'itinéraires .. ne correspond à aucun des contrôleurs / actions à cette demande et puis essayer ce chemin directement?
La solution
Vous pouvez choisir de mapper un fichier existant ou non le réglage de la RouteCollection.RouteExistingFiles
propriété
Obtient ou définit une valeur qui indique si le routage ASP.NET doit gérer URL correspondant à un fichier existant.
Cependant, le système de routage ne fonctionne toujours vérifier le système de fichiers pour voir si un URL entrante arrive à correspondre à un fichier ou d'un disque, et si oui, le routage ne tient pas compte de la demande (contournement toutes les entrées de l'itinéraire que l'URL peut aussi correspondre) afin que le fichier sera servi. Ceci est très pratique pour les fichiers statiques, tels que des images, CSS, JavaScript et fichiers. Vous pouvez les garder dans votre projet (par exemple, dans votre / ou contenu / dossiers de script), puis référence et les servir directement, comme si vous n'utilisez pas le routage du tout. Étant donné que le fichier existe réellement sur le disque, qui prend la priorité sur la configuration de routage.
Si, au contraire, vous voulez que votre configuration de routage pour prendre la priorité sur les fichiers sur le disque, vous pouvez définir la propriété RouteExistingFiles de RouteCollection true. (Il est faux par défaut.)
Autres conseils
Par défaut, le moteur de routage ignorera la route des cartes pour tous les fichiers qui existent physiquement sur le serveur. En bref, vous avez besoin de ne rien faire pour une application MVC lien vers des fichiers statiques.
Vous pouvez aussi faire un petit truc dans IIS. Je stocke mes js, images, etc css dans le dossier de contenu sous le répertoire virtuel.
Si vous affichez les propriétés puis (dans le gestionnaire IIS) du dossier de contenu, créez un répertoire virtuel, puis supprimer le mappage Wildcard. Réglez ensuite le dos contenu du dossier dans un répertoire normal. Cela devrait alors cesser de demandes à ces fichiers traités par le gestionnaire aspnet_isapi.