13

Ich möchte ein Bündel wie diese haben zu definieren:Gibt es eine Möglichkeit, eine Dateierweiterung in einem Bundle-Namen zu haben?

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

Wenn das Bündel Name dies funktioniert nur "~/style" ist, aber mit der Dateierweiterung gibt es immer ein 404. ich die Server sucht nach CSS und JS vermuten Dateien auf dem Laufwerk und ignorieren die Bündelung System, aber ich kann nicht jemand anderes finden, die Dateierweiterungen in Bündelnamen enthalten versucht. Ist es möglich, auf eine URL-Neuschreibung zu verzichten?

Antwort

19

Sie konnten die folgenden auf Ihre <system.webServer> Abschnitt in web.config hinzufügen:

<modules runAllManagedModulesForAllRequests="true" /> 

Dies wird sichergestellt, dass Anfragen für statische Ressourcen wie .js und .css durch die verwalteten Module passieren und von ASP abgefangen werden. NET MVC.

Als Alternative zu ermöglichen runAllManagedModulesForAllRequests für alle Anfragen Sie sie nur für die URLs konfigurieren könnten Sie verwenden müssen. So in der <handlers> fügen Sie folgendes:

<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, gibt es eine weniger drastische Lösung, die nur js und CSS-Dateien auswirken würde? – sbking

+0

Sicher, siehe meine aktualisierte Antwort. –

+1

+1 aber mit 'path = "*. Bundle.js"' dem Handler vom Laufen für echte Dateien verhindern. –

Verwandte Themen