2011-10-10 9 views

risposta

23

È necessario creare un percorso ignorato per i tipi specifici di file che non si desidera essere pubblicati tramite ASP.NET MVC.

Aggiungere quanto segue ai percorsi, per i tipi di file che si desidera ignorare.

I seguenti lavori per file nella root:

routes.IgnoreRoute("{file}.css"); 
routes.IgnoreRoute("{file}.jpg"); 
routes.IgnoreRoute("{file}.gif"); 

Se si desidera ignorare i file in una directory specifica, si può fare questo:

routes.IgnoreRoute("assets/{*pathInfo}"); 

Se si desidera combinare questi in un percorso, è possibile (ad esempio, ignorare i tipi specifici di file in una directory):

routes.IgnoreRoute("{assets}", new { assets = @".*\.(css|js|gif|jpg)(/.)?" }); 

Questo 0.123.717,776 milaaccetta un URL (il primo argomento) e un oggetto Constraints di cose da ignorare.

Poiché i RouteConstraints in ASP.NET MVC possono essere implementati in più modi (inclusa una regex), è possibile inserire espressioni regolari nel secondo argomento.

Se si desidera implementare un vincolo personalizzato, there is lots of useful documentation on that subject (ad esempio, se il vincolo è dinamico in fase di runtime).

+0

Perché si può fare solo routes.RouteExistingFiles = false; Non dovrebbe funzionare per i file che esistono? –

2

In Global.asax.cs all'inizio del metodo di RegisterRoutes scrivere il seguente:

routes.IgnoreRoute("Content/{*pathInfo}"); 

sostituzione Content con il nome di una cartella contenente i file statici.

George, però, a condizione More comprehensive solution

6

file statici non vengono elaborati da ASP.NET MVC, a meno che non si dispone di un percorso che corrisponde l'URL di un file statico. Forse stai chiedendo di file statici elaborati da ASP.NET, in tal caso non dovresti usare runAllManagedModulesForAllRequests="true". Ecco uno post con ulteriori informazioni.

15

Attenzione, la risposta di @ george-stocker funziona solo per i file statici nella directory radice !!!

per la cattura di file statici in tutte le possibili directory/sottodirectory, utilizzare una regola con una "condizione" ignorare, in questo modo:

routes.IgnoreRoute("{*allfiles}", new { allfiles = @".*\.(css|js|gif|jpg|png)" }); 
+0

La domanda era ambigua, ma per me ignorare l'estensione del file tende a implicare che si voglia fare questo a livello globale (comprese le sottodirectory). Questa risposta ha successo mentre la risposta accettata no. –

Problemi correlati