it-swarm.com.de

CSS, Images, JS werden nicht geladen IIS

Meine Anwendungen funktionierten gut, aber plötzlich laden nicht alle Sites unter IIS CSS, Bilder und Skripts. Es leitet zur Anmeldeseite weiter. 

Wenn ich mich einlogge, funktioniert es gut. z.B. mysite.com/Account/LogOn?ReturnUrl=%2fpublic%2fimages%2ficons%2f41.png

Auf meinem lokalen Rechner funktioniert es auch ohne Login.

104
Imran Rashid

Es war ein Windows-Berechtigungsproblem. Ich verschiebe den Ordner, der falsche Berechtigungen erbt. Wenn ich in den Ordner "wwwroot" wechsle und die Berechtigung für den Benutzer "iis" hinzufüge, funktioniert es gut.

6
Imran Rashid

Das Problem kann sein, dass IIS keinen statischen Inhalt bereitstellt, den Sie hier einrichten können: enter image description here

Quelle: http://adilmughal.com/blog/2011/11/iis-7-not-loading-css-and-image/

160
Matt Kocaj

Ich hatte das gleiche Problem. Eine nicht authentifizierte Seite würde CSS, JS und Images nicht laden, wenn ich meine Webanwendung in ASP.Net 4.5 in IIS 8.5 unter Windows Server 2012 R2 installierte.

  1. Ich hatte die statische Inhaltsrolle installiert
  2. Meine Webanwendung befand sich im Ordner wwwroot von IIS und alle Windows-Ordnerberechtigungen waren intakt (die Standardberechtigungen, einschließlich IIS_IUSRS).
  3. Ich habe die Autorisierung für alle Ordner hinzugefügt, die CSS, JS und Bilder enthalten.
  4. Ich hatte den Webanwendungsordner auf einer Windows-Freigabe, also entfernte ich die Freigabe, wie von @ imran-rashid vorgeschlagen

Dennoch schien nichts das Problem zu lösen. Dann versuchte ich schließlich, die Identität des anonymen Benutzers auf die App Pool Identity zu setzen, und es begann zu funktionieren.

Click on the Authentication FeatureEdit the Anonymous AuthenticationChange to App Pool Identity

Ich habe für ein paar Stunden auf den Kopf geklopft und hoffe, dass diese Antwort die Qualen für meine Mitentwickler retten wird.

Ich würde wirklich gerne wissen, warum das funktioniert. Irgendwelche Gedanken?

139
Moiz Tankiwala

Ich hatte einen ähnlichen Fehler, meine Konsole sah folgendermaßen aus:

 error

Mein Problem war, dass ich meine Site in einem Unterordner betreibe, da das Unternehmen eine Top-Domain und keine Sub-Domains verwendete. So was:

Host.com/app1

Host.com/app2

Mein Code sah für das Einfügen von Skripts so aus, die auf localhost gut funktionierten, aber nicht in app1 oder app2:

<link rel="stylesheet" type="text/css" href="/Content/css/font-awesome.min.css" />

Src hat ein Tilde-Zeichen ~ hinzugefügt und alles hat funktioniert:

<link rel="stylesheet" type="text/css" href="~/Content/css/font-awesome.min.css" />

Erklärung von ~ vs. /:

  • / - Site-Root
  • ~/ - Stammverzeichnis der Anwendung

/ gibt den Stamm der Site zurück (http://Host.com/),

~/ gibt das Stammverzeichnis der Anwendung zurück (http://Host.com/app1/).

16
Ogglas

Dies könnte Ihre Frage nicht beantworten, aber ich habe mit einer neuen IIS -Installation mit den gleichen Symptomen meinen Kopf geschlagen. CSS, JS und Bilder wurden nicht angezeigt. Liegt daran, dass die Rolle "Statischer Inhalt" nicht in IIS installiert ist 7.5.

14
user23462

Entfernen Sie den Abschnitt staticContent aus Ihrer web.config .

<system.webServer>
    <staticContent>
        ...
    </staticContent>
</system.webServer>
14
intrepidis

In Ihrer web.config ist wahrscheinlich die Windows-Authentifizierung aktiviert. Auf einem lokalen Computer werden Ihre Windows-Anmeldeinformationen automatisch übergeben, und es funktioniert. Auf einer Live-Site werden Sie als anonymer Benutzer behandelt (IE-Einstellungen können dies steuern, ändern Sie dies jedoch nicht, wenn Sie nicht wirklich wissen, was Sie tun).

Dies bewirkt Folgendes:

  • Sie müssen sich explizit anmelden.
  • Ressourcen wie Skripts und CSS werden auf der Anmeldeseite nicht bereitgestellt, da Sie nicht authentifiziert sind.

Dies ist nicht kaputt, funktioniert nur wie beabsichtigt, aber um dies zu "beheben":

  • Ändern Sie den Authentifizierungstyp in der Datei web.config, wenn Sie keine Anmeldung wünschen.
  • Und/oder fügen Sie eine web.config in den Verzeichnissen ein, die CSS, Bilder, Skripts usw. enthalten, in denen Berechtigungsregeln festgelegt sind.
6
Tim Medora

Fügen Sie dies Ihrer web.config hinzu

<location path="Images">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>
6
Mathias F

Verwenden Sie dies im Konfigurationsabschnitt Ihrer Datei web.config:

<location path="images">
<system.web>
  <authorization>
    <allow users="*"/>
  </authorization>
</system.web>
</location>
<location path="css">
<system.web>
  <authorization>
    <allow users="*"/>
  </authorization>
</system.web>
</location>
<location path="js">
<system.web>
  <authorization>
    <allow users="*"/>
  </authorization>
</system.web>
</location>
5
Rohit Vyas

Das Hinzufügen des Codes in web.config hat das Problem behoben

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" >
      <remove name="UrlRoutingModule"/>    
    </modules>
</system.webServer>
2
ihebiheb

Um das zu beheben:

Gehen Sie zu Internet Information Service (IIS).

Klicken Sie auf Ihre Website, auf der Sie das Image laden möchten

Öffnen Sie im Abschnitt IIS das Menü Authentifizierung und aktivieren Sie auch Windows-Authentifizierung.

1
Naijalivemedia

Ich hatte das gleiche Problem. Für mich lag es daran, dass der Cache-Control-Header auf Serverebene in IIS auf no-cache, no-store gesetzt wurde. Für meine Bewerbung musste ich meiner web.config also Folgendes hinzufügen:

<httpProtocol>
    <customHeaders>
        <remove name="Cache-Control" />
    </customHeaders>
</httpProtocol>
1
Daniel Cox

In meinem Fall, 

IIS kann alles mit localhost laden, aber meine Vorlagendateien app.tag aus 192.168.0.123 konnte nicht geladen werden.

weil die Erweiterung .tag nicht in der Liste war.

 IIS MIME types

1
Hiep

Meine Stunde des Schmerzes lag in der Definition von MIME-Typen in der web.config. Ich brauchte dies für den Entwicklungsserver, aber lokal IIS hasste es, weil es MIME-Typen duplizierte ... Sobald ich diese aus der web.config entfernte, ging das Problem mit js, css und nicht geladenen Bildern weg.

1
peroija

Ein Vorschlag, den ich in der Vergangenheit als hilfreich erwiesen habe, ist die Entwicklung von Standorten in der Testumgebung von localhost, wenn mit einer Kopie der Produktionsstätte gearbeitet wird. Stellen Sie sicher, dass Sie die kanonischen Tags auskommentieren:

  <!--<base href="http://www.example.com/">//-->
1
yardpenalty

Wenn Sie alle oben genannten Lösungen ausprobiert haben und immer noch Probleme haben, sollten Sie die Methode ResolveClientUrl () von ASP.NET in Betracht ziehen.

Ein Skript für Beispiel:

Anstatt zu verwenden

<script src="~/dist/js/app.min.js" ></script>

Verwenden Sie die Methode

<script src="<%= ResolveClientUrl("~/dist/js/app.min.js") %>" ></script>

Dies war meine Lösung, die für einen Freund funktionierte, dem ich half.

1
KeitelDOG

Eine mögliche Ursache hierfür ist, dass Ihre Anwendung voraussichtlich auf Port 443 (Standard-SSL-Port) ausgeführt wird und Port 443 bereits verwendet wird. Ich habe einige Male mit Entwicklern versucht, unsere Anwendung auszuführen, während Skype auf ihren Computern ausgeführt wird.

Unglaublicherweise läuft Skype auf Port 443. Dies ist meiner Meinung nach ein schrecklicher Konstruktionsfehler. Wenn Sie sehen, dass Ihre Anwendung versucht, auf 444 statt 443 zu laufen, fahren Sie Skype herunter, und das Problem wird behoben.

0

Ich habe app.UseStaticFiles(); diesen Code in startup.cs der Configure-Methode hinzugefügt, als es behoben ist.

Und überprüfen Sie Ihre Erlaubnis für diesen Ordner.

0
Metin Atalay

Für Bilder verwenden

@Url.Content("~/assets/bg4.jpg")

verwenden Sie dies für einen Style

style="background-image:url(@Url.Content("~/assets/bg4.jpg"))
0