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.
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.
Das Problem kann sein, dass IIS keinen statischen Inhalt bereitstellt, den Sie hier einrichten können:
Quelle: http://adilmughal.com/blog/2011/11/iis-7-not-loading-css-and-image/
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.
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.
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?
Ich hatte einen ähnlichen Fehler, meine Konsole sah folgendermaßen aus:
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/
).
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.
Entfernen Sie den Abschnitt staticContent aus Ihrer web.config .
<system.webServer>
<staticContent>
...
</staticContent>
</system.webServer>
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:
Dies ist nicht kaputt, funktioniert nur wie beabsichtigt, aber um dies zu "beheben":
Fügen Sie dies Ihrer web.config hinzu
<location path="Images">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
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>
Das Hinzufügen des Codes in web.config
hat das Problem behoben
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" >
<remove name="UrlRoutingModule"/>
</modules>
</system.webServer>
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.
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>
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.
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/">//-->
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.
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.
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.
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"))