Frage

Wenn ich eine Anforderung für eine Ressource in meinem ASP.NET MVC1 (oder 2) Web-App für eine statische Ressource, sagen wir ... ein Bild oder eine JavaScript-Datei oder eine CSS-Datei ... funktioniert das .NET-Framework versuchen und sehen, ob die Anforderung der Route Liste übereinstimmt ... und schließlich keinen Controller für sie finden kann?

zB.

Ressource: /Content/Images/Foo.png

Enthält diese Anforderung geht durch meine Routenliste .. nicht auf diese Anforderung keine Controller / Aktionen anzupassen und versuchen dann, diesen Weg direkt?

War es hilfreich?

Lösung

Sie können wählen, ob eine vorhandene Datei abzubilden oder nicht die RouteCollection.RouteExistingFiles Immobilien

  

Ruft einen Wert ab, der angibt,   ob Routing ASP.NET sollte umgehen   URLs, die eine vorhandene Datei entsprechen.

Hier ist, was wir lesen von hier :

  

das Routing-System immer noch Allerdings ist das Dateisystem überprüfen, um zu sehen, ob eine       eingehende URL geschieht eine Datei oder einen Datenträger passen, und wenn ja, ignoriert das Routing der Anfrage (Umgehen       alle Routeneinträge, dass die URL auch passen könnte), so dass die Datei direkt bedient werden.       Dies ist sehr praktisch für statische Dateien, wie Bilder, CSS und JavaScript-Dateien. Du kannst       halten sie in Ihrem Projekt (zum Beispiel in Ihrem / Content oder / Script Ordner), und dann Referenz- und       dienen sie direkt, so als ob Sie nicht unter Verwendung an allen Routing. Da die Datei existiert wirklich       auf der Festplatte erfolgt, dass die Priorität über Ihre Routing-Konfiguration.

     

Wenn stattdessen Sie Ihre Routing-Konfiguration hat Vorrang vor Dateien auf der Festplatte zu nehmen, können Sie einstellen,       die RouteExistingFiles Eigenschaft auf true der Routecollection. (Es ist falsch standardmäßig aktiviert.)

Andere Tipps

Standardmäßig wird das Routing-Engine wird Route ignorieren Karten für alle Dateien, die physisch auf dem Server vorhanden. Kurz gesagt, müssen Sie nichts für ein MVC-App-Link zu statischen Dateien tun.

Sie können auch einen kleinen Trick in IIS tun. Ich speichere meine js, Bilder, CSS usw. im Content-Ordner unter dem virtuellen Verzeichnis.

Wenn Sie dann properties (in IIS-Manager) des Content-Ordner, erstellen Sie es als virtuelles Verzeichnis, dann die Wildcard-Mapping entfernen. Dann auf ein normales Verzeichnis des Content-Ordner zurück. Dies sollte dann aufhören Anfragen auf diese Dateien durch den aspnet_isapi Handler gehandhabt werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top