13

Vorrei avere definire un fascio come questo:C'è un modo per avere un'estensione di file in un nome bundle?

bundles.Add(
    new StyleBundle("~/style.css").Include(
     //... 
)); 

Se il nome del bundle è proprio "~/style" questo funziona, ma con l'estensione del file che restituisce sempre un 404. Ho il sospetto che le ricerche di server per i CSS e JS file sull'unità e ignora il sistema di raggruppamento, ma non riesco a trovare nessun altro che stia cercando di includere estensioni di file nei nomi dei bundle. È possibile fare a meno di qualcosa come una riscrittura di URL?

risposta

19

si potrebbe aggiungere il seguente alla sezione <system.webServer> nel web.config:

<modules runAllManagedModulesForAllRequests="true" /> 

Questo farà sì che le richieste di risorse statiche, come .js e .css passeranno attraverso i moduli gestiti ed essere intercettato da ASP. NET MVC.

In alternativa all'abilitazione di runAllManagedModulesForAllRequests per tutte le richieste, è possibile configurarle solo per gli URL che è necessario utilizzare. Così all'interno del <handlers> aggiungere il seguente:

<handlers> 
    <!-- ... --> 
    <add name="scriptBundle" verb="*" path="script.js" type="System.Web.Optimization.BundleHandler, System.Web.Optimization" preCondition="managedHandler" /> 
    <add name="cssBundle" verb="*" path="style.css" type="System.Web.Optimization.BundleHandler, System.Web.Optimization" preCondition="managedHandler" /> 
</handlers> 
+3

Hmm, c'è una soluzione meno drastica che interesserebbe solo js e file css? – sbking

+0

Certo, guarda la mia risposta aggiornata. –

+1

+1 ma avendo 'path =" *. Bundle.js "' impedirà al gestore di eseguire i file reali. –