it-swarm.com.de

ASP.NET MVC Framework 4.5 CSS-Bundles funktionieren beim Hosting nicht

Ich starte eine App auf einem in MVC4 geschriebenen App-Hafen.

Ein Bündel von CSS-Dateien funktioniert nicht. Auf meinem lokalen Computer im Debug-Modus sehe ich den Code der App und die Dateien. Die App funktioniert wie erwartet.

<link href="/Content/css/home/basic-jquery-slider.css" rel="stylesheet"/>
<link href="/Content/css/home/Home.css" rel="stylesheet"/>

Wenn ich die App in Appharbor hochlade, sehe ich das Bundle im Code, aber die App funktioniert nicht.

<link href="/Content/css/home?v=zhVOIpUNuvCOZhJyBcQWpMlozayor4te6k-pM29wHqI1" rel="stylesheet"/>

Wenn ich diesen Link in href browse, bekomme ich 403 - verboten: Zugriff wird verweigert.

Wie kann ich das beheben?

139
Ricardo Polo

Ich vermute, dass der Pfad Content/css auf der Festplatte Ihrer App vorhanden ist. In diesem Fall würde IIS die Anforderung bearbeiten, nicht MVC.

Stellen Sie sicher, dass der virtuelle Pfad für das Bundle (der Parameter des StyleBundle-Konstruktors) nicht mit einem Ordner im Dateisystem übereinstimmt.

Aus den Kommentaren:

"Eine gute Konvention, die beim Erstellen von Bundles zu befolgen ist, ist " Bundle "als Präfix in den Bundle-Namen aufzunehmen. Dies verhindert einen möglichen Routing-Konflikt."

279
Paul

Dieses Problem ist standardmäßig. NET "verarbeitet" keine Anforderungen mit der Erweiterung ".js" oder ".css".

Hierfür gibt es zwei Lösungen (Sie müssen nur EINE ausführen)

A) Entfernen Sie die Erweiterungen von den Bundle-Namen. (empfohlen) Dadurch wird .NET veranlasst, die Anforderung zu verarbeiten und über das BundleModule auszuführen.

B) Fügen Sie dies zu Ihrer web.config im Abschnitt system.webServer hinzu, wodurch .NET .js- und .css-Anforderungen über das BundleModule ausführt.

<modules runAllManagedModulesForAllRequests="true">
  <remove name="BundleModule" />
  <add name="BundleModule" type="System.Web.Optimization.BundleModule" />
</modules>

Ein großes Dankeschön an Ray Moro, der die eigentliche Ursache herausgefunden und mir auf meinem Blog mitgeteilt hat: http://blog.cdeutsch.com/2012/11/fixing-404-errors-for-aspnet-mvc -apps.html

44
cdeutsch

Das passierte auch bei mir, als ich versuchte, meine ASP.NET MVC-App auf AppHarbor bereitzustellen.

Ich hatte ein Stylesheet-Bundle mit dem Namen

@Styles.Render("~/Content/bootstrap")

und die Ordnerstruktur war 

- Inhalt

- Inhalt\Bootstrap\...

Indem Sie einfach den Namen des Pakets in "~/Content/bootstrap-css" ändern, wurde mein Problem erneut gelöst.

19
Yasser

Ich weiß, dass ich 4 Jahre zu spät auf diese Frage bin, aber das hat für mich funktioniert.

public static void RegisterBundles(BundleCollection bundles)
{
   ...

   BundleTable.EnableOptimizations = true;     // Added this           
}
12
RayLoveless

403 Fehler behoben. Hier ist eine detaillierte Erklärung und Lösung für den 403-Fehler.
Die Lösung wird für CSS-Bundle demonstriert. Es gilt jedoch auch für JavaScript. 

http://www.mvccentral.net/Story/Details/articles/kahanu/stylebundle-403-error-solved

Stellen Sie in aller Kürze sicher, dass der virtuelle Pfad [Script | Style]Bundle("~/content/[script | css]") nicht mit einem Ordner im Dateisystem übereinstimmt (z. B. C:\approot\Content\[script | css]), sondern [Script | Style]Bundle("~/content/[scriptDiff | cssDiff]").

9
yantaq

Was ich mache, ist sehr einfach,

Ich füge "js" am Ende von ScriptBundle wie folgt hinzu: new ScriptBundle ("~/bundles/appjs") Und ich füge "css" am Ende von StyleBundle hinzu: new StyleBundle ("~/content/appcss.) ")

Meine Ordnernamen enden niemals mit "js" oder "css".

Das sollte es tun.

3
abelabbesnabi

Ich habe das Problem gelöst, indem ich in der BundleConfig-Klasse eine Codezeile hinzugefügt habe

BundleTable.EnableOptimizations = false;
2
Ye Yint

Dies gilt auch für die 'ScriptBundle-Klasse'. Stellen Sie sicher, dass der 'Parametername' des Konstruktors nicht mit einem Pfad im Dateisystem der Webanwendung übereinstimmt. Denken Sie daran, dass IIS versucht, die Datei/Anforderung zu liefern.

2
William

Das Problem kann auch von der zu verschlüsselnden Datei stammen. Dies ist mir aufgefallen, als ich BootStrap heruntergeladen und die mitgelieferten Dateien verwendet habe. Sie zeigten grün in Windows Explorer und funktionierten in Visual Studio einwandfrei. Bei der Bereitstellung wurde jedoch ein Fehler 403 angezeigt.

Sie können feststellen, ob sie verschlüsselt sind, indem Sie zu den Eigenschaften und dann zu den erweiterten Eigenschaften gehen. Außerdem gibt es ein Kontrollkästchen mit Enzyklisierung.

Deaktivieren Sie das Kontrollkästchen und es wird kein Problem mehr sein.

1
Greg Gum

Ich habe das gleiche Problem mit diesem (403 Forbidden) Fehler ... In meinem Fall blockiert der Proxyserver in meiner Organisation meine CSS-Datei.

0

Ich fand heraus, dass die Datei bootstrap.css nicht im Inhaltsordner lag, also habe ich sie in den Paketen gesucht und dort eingefügt.

0
Majid ALSarra