6
votes

ASP.NET MVC Routing et données statiques (c'est-à-dire des images, des scripts, etc.)

Si j'ai une demande d'une ressource dans mon application Web ASP.NET MVC1 (ou 2) pour une ressource statique, dites ... une image ou un fichier JavaScript ou un fichier CSS ... Est-ce que le framework .NET Essayez de voir si la demande correspond à la liste d'itinéraire ... et ne peut éventuellement pas à trouver un contrôleur pour cela?

EG.

ressource: /content/images/foo.png

Cette demande passe-t-elle sur la liste de mon itinéraire .. omet de correspondre à tous les contrôleurs / actions à cette demande, puis tentez ce chemin directement?


0 commentaires

3 Réponses :


7
votes

Vous pouvez choisir de mapper un fichier existant ou non de définir le paramètre RoutCollection.RouteeExistingFiles Propriété

Obtient ou définit une valeur indiquant Si l'acheminement ASP.NET doit gérer URL qui correspondent à un fichier existant.

Voici ce que j'ai lu depuis ici :

Cependant, le système de routage vérifie toujours le système de fichiers pour voir si un L'URL entrante se heurte à un fichier ou à un disque, et le cas échéant, l'acheminement ignore la demande (contournement Toute entrées de route que l'URL peut également correspondre) afin que le fichier soit servi directement. Ceci est très pratique pour les fichiers statiques, tels que des images Images, CSS et JavaScript. Tu peux Gardez-les dans votre projet (par exemple, vos dossiers / contenus ou / de script), puis référence et Servez-les directement, comme si vous n'utilisiez pas de routage du tout. Depuis que le fichier existe véritablement sur disque, qui prend la priorité sur votre configuration de routage.

Si, à la place, vous souhaitez que votre configuration de routage prend la priorité sur les fichiers sur disque, vous pouvez définir La propriété de routétexistingFiles de routé de routé de routé à true. (C'est faux par défaut.)


1 commentaires

Alors, quel est votre dicton, c'est que, il essaie d'abord de trouver le fichier sur le disque (par exemple, foo.png, quelque chose.js, certains.ico, quoi que ce soit). S'il omet de le faire, il commence alors dans le système de routage. Donc, au moment où il entre dans ma propre iControllerFactory (par exemple), il est supposé que la ressource n'existe pas physiquement sur le disque. Enfin, il s'agit pour le jeu de configuration par défaut (c.-à-d. POUTEXISTINGFILES = FALSE).



0
votes

Vous pouvez aussi faire un petit tour dans IIS. Je stocke mon JS, mes images, CSS, etc. dans le dossier de contenu sous le répertoire virtuel.

Si vous affichez ensuite les propriétés (dans IIS Manager) du dossier de contenu, créez-le sous forme de répertoire virtuel, puis retirez la cartographie générique. Puis définissez le dossier de contenu dans un répertoire normal. Cela devrait ensuite arrêter les demandes à ces fichiers manipulés par le gestionnaire aspnet_isapi.


0 commentaires

1
votes

Par défaut, le moteur de routage ignorera les cartes d'itinéraire pour tous les fichiers existants physiquement sur le serveur. En bref, vous n'avez besoin de rien pour une application MVC pour créer un lien vers des fichiers statiques.


0 commentaires