Domanda

Se ho una richiesta di una risorsa nel mio ASP.NET MVC1 (o 2) web app per una risorsa statica, diciamo ... un un file JavaScript o un file di immagine o css ... fa il framework .NET provare e vedere se la richiesta corrisponde all'elenco percorso ... e alla fine non riesce a trovare un controller per questo?

ad es.

Resource: /Content/Images/Foo.png

Questo richiesta go attraverso la mia lista percorso .. non riesce a soddisfare qualsiasi controller / azioni a questa richiesta e quindi tentare questa strada direttamente?

È stato utile?

Soluzione

E 'possibile scegliere se mappare un file esistente o meno l'impostazione della RouteCollection.RouteExistingFiles Proprietà

  

Ottiene o imposta un valore che indica   se ASP.NET di routing dovrebbe gestire   URL che corrispondono a un file esistente.

Ecco quello che ho letto da qui :

  

Tuttavia, il sistema di routing fa ancora controllare il file system per vedere se un       URL in ingresso avviene per abbinare un file o un disco, e in tal caso, il routing ignora la richiesta (bypassando       tutte le voci di percorso che l'URL potrebbe anche match) in modo che il file verrà servita direttamente.       Questo è molto comodo per i file statici, come immagini, CSS e file JavaScript. Puoi       tenerli nel progetto (ad esempio, nel vostro / Contenuto o / cartelle Script), e quindi di riferimento e       servirli direttamente, proprio come se si stesse utilizzando il routing non a tutti. Dal momento che il file esiste davvero       su disco, che ha la priorità rispetto alla configurazione di routing.

     

Se, invece, si vuole la configurazione di routing a prendere la priorità su file su disco, è possibile impostare       della RouteCollection proprietà RouteExistingFiles su true. (E 'falso per impostazione predefinita.)

Altri suggerimenti

Per impostazione predefinita il motore di routing ignorerà percorso le mappe per tutti i file che esistono fisicamente sul server. In breve, è necessario fare nulla per un'applicazione MVC creare un collegamento a file statici.

Si può anche fare un piccolo trucco in IIS. Devo conservare il mio js, ??css, immagini ecc nella cartella Contenuto sotto la directory virtuale.

Se quindi visualizzare le proprietà (in Gestione IIS) della cartella contenuti, creare come una directory virtuale, quindi rimuovere il mapping jolly. Quindi impostare la parte posteriore cartella Contenuto in una directory normale. Questo dovrebbe quindi interrompere le richieste a questi file affidate dal gestore aspnet_isapi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top