10
votes

Routage MVC Lorsqu'un fichier existe réellement à l'emplacement spécifié

J'ai donc un itinéraire comme celui-ci dans mon application MVC 3 fonctionnant sous IIS 7:

routes.MapRoute(
               "VirtualTourConfig",
               "virtualtour/config.xml",
               new { controller = "VirtualTour", action = "Config" }
               );


1 commentaires

Je ne pense pas qu'il y ait un moyen facile d'y parvenir. Pourquoi ne déplacez-vous simplement pas le fichier statique vers le dossier ~ / app_data ?


4 Réponses :


8
votes

Jusqu'à présent, la meilleure réponse à cela que j'ai trouvé est d'appliquer globalement routes.routeeexistingfiles = true puis ignorez de manière sélective les itinéraires que je veux passer à des fichiers existants tels que .js, .css , etc. Alors j'ai fini avec quelque chose comme ceci: XXX

Si quelqu'un a une meilleure solution, j'aimerais le voir. Je préférerais de loin appliquer sélectivement un drapeau "romptexistingfiles" sur des itinéraires individuels, mais je ne sais pas s'il y a un moyen de le faire.


0 commentaires

0
votes

Aucune solution ici, juste une idée.

Vous pouvez essayer d'implémenter une solution en fonction de votre propre VirtualPathProvider permettra de fournir votre propre cartographie des chemins Web vers des chemins système de fichiers et d'utiliser le fournisseur par défaut pour tous les chemins que vous ne voulez pas prendre en charge.


0 commentaires

-1
votes

Une solution très simple, certainement si vous considérez la réponse de Scott, par exemple: routes.ignoreroute ("Modèles / *. HTML"); , routes.ignoreroute ("scripts / *. JS"); et routes.ignoreroute ("styles / *. CSS"); .

Cela vous donne à la fois la simplicité de simplement fournir des chemins à la routéculité et évite les travaux de devoir initier. un virtuelPathProvider.


0 commentaires

-1
votes

Vous pouvez essayer urlewiting EG:

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Dashboard">
          <match url="^dashboard/(.+)" />
          <action type="Rewrite" url="ng/dashboard/{R:1}" />
        </rule>
      </rules>
    </rewrite>


0 commentaires