CSS, Immagini, JS non caricati in IIS


126

Tutte le mie applicazioni funzionavano bene, ma all'improvviso tutti i siti sotto IIS non caricano CSS, immagini, script. Reindirizza alla pagina di accesso.

Se accedo funziona bene. ad esempio mysite.com/Account/LogOn?ReturnUrl=%2fpublic%2fimages%2ficons%2f41.png

Sul mio computer locale funziona benissimo senza login.


tagging errato, non vera domanda ...
Renatas M.

3
Ripristina versione taggata perché penso di sapere cosa sta causando questo comportamento e i tag sono rilevanti. In caso contrario, voterò per chiudere.
Tim Medora,

Non è un problema con questa configurazione web, ho provato tutte le risposte. Penso che sia un problema con IIS perché tutti i siti funzionavano bene prima di distribuire un'applicazione che ha effetto su IIS
Imran Rashid

@ImranRashid: questo sito eredita le impostazioni da un altro sito in IIS?
Tim Medora,

@Tim Medora - No signore, non eredita da altri siti.
Imran Rashid,

Risposte:


185

Il problema potrebbe essere che IIS non offre contenuti statici, che puoi impostare qui: inserisci qui la descrizione dell'immagine

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

Windows 10:

versione di Windows 10 della finestra di dialogo sopra


2
Ho avuto un problema simile, mi sono reso conto che si trattava di un problema di installazione, ma l'abilitazione del contenuto statico sembra averlo risolto!
ife labolz,

5
Questo mi ha salvato la pancetta, penseresti che fosse abilitato di default ma su Windows 10 non lo è.
Giustino,

3
Lame questo non è controllato per impostazione predefinita.
RayLoveless,

3
@RayLoveless Penso che ciò che è zoppo sia che MVC abbia una forte dipendenza da questa funzionalità IIS abilitata affinché il contenuto statico funzioni in MVC. Penso che non dovrebbero essere così accoppiati. Forse .NET Core risolverà questo problema. : p
Matt Kocaj,

2
E eccoci di nuovo qui, salvati dalla stessa risposta, 2 anni dopo dall'ultima volta.
Eric Wu,

176

Ho avuto lo stesso problema, una pagina non autenticata non caricava CSS, JS e Images quando ho installato la mia applicazione Web in ASP.Net 4.5 in IIS 8.5 su Windows Server 2012 R2.

  1. Ho installato il ruolo di contenuto statico
  2. La mia applicazione Web era nella cartella wwwroot di IIS e tutte le autorizzazioni per le cartelle di Windows erano intatte (quelle predefinite, incluso IIS_IUSRS)
  3. Ho aggiunto l'autorizzazione per tutte le cartelle che contenevano CSS, JS e immagini.
  4. Avevo la cartella dell'applicazione Web su una condivisione Windows, quindi ho rimosso la condivisione come suggerito da @ imran-rashid

Tuttavia, nulla sembrava aver risolto il problema. Quindi finalmente ho provato a impostare l'identità dell'utente anonimo su App Pool Identity e ha iniziato a funzionare.

Fai clic sulla funzione di autenticazione Modifica l'autenticazione anonima Passa a Identità pool di app

Ho sbattuto la testa per alcune ore e spero che questa risposta salverà l'agonia per i miei colleghi sviluppatori.

Mi piacerebbe davvero sapere perché funziona. qualche idea?


1
Questo ha funzionato anche per me. Credo che ciò sia dovuto al fatto che l '"Utente specifico" non disponeva delle autorizzazioni per l'ubicazione della cartella, dove è presente l'identità del pool di applicazioni.
dcinadr,

4
Poche ore ? Mi ci sono voluti più di 4. Grazie a Dio mi ha aiutato :)
Tito,

3
Ho avuto questo problema all'improvviso, dopo aver condiviso la cartella wwwroot. La tua soluzione l'ha risolto. Grazie per aver dedicato del tempo per aggiungerlo e per i dettagli.
Risorsa

1
LEGGENDA! Grazie mille
David,

1
Questa è la seconda volta che ho dovuto cercare il tuo post, b / c mi ha salvato due volte ora. Ti voterei 100 volte se potessi. Stavo usando Umbraco - ho configurato il mio IIS locale usando Documents \ Visual Studio 2013 \ Projects - aggiunto CPUName\IIS_IUSRSe ancora non si caricava. Grazie ancora!
Rob Scott,

18

Ho avuto un errore simile, la mia console sembrava così:

errore

Il mio problema era che gestivo il mio sito in una sottocartella poiché la società utilizzava un dominio superiore e nessun sottodominio. Come questo:

host.com/app1

host.com/app2

Il mio codice era simile al seguente per includere gli script che funzionavano bene su localhost ma non in app1 o app2:

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

Aggiunto un segno tilde ~a src e poi tutto ha funzionato:

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

Spiegazione di ~vs /:

  • / - Radice del sito
  • ~/ - Directory principale dell'applicazione

/restituirà la radice del sito ( http://host.com/),

~/restituirà la radice dell'applicazione ( http://host.com/app1/).


1
voto positivo. Stavo avendo questo problema, l'app non caricava nulla sul palco ma caricava sulla produzione. Uso anche @ Url.Content () con ~ /. Non testato in produzione, ma penso che funzionerà
Kross,

17

Prova a rimuovere la sezione staticContent dal tuo web.config .

<system.webServer>
    <staticContent>
        ...
    </staticContent>
</system.webServer>

La rimozione di staticContent funziona ma ora tutti i miei caratteri sono 404?
Rajesh Sivasankaran,

Non sono un esperto in questo, ma forse è necessario aggiungere le dichiarazioni di tipo MIME corrette per i caratteri tramite Gestione IIS nella scheda Intestazioni HTTP delle proprietà del sito Web.
intrepidis,

1
Questo ha risolto il problema per me, perché ho alcune voci di file .woff lì in fase di sviluppo, ma in produzione la stessa installazione necessita di modifiche
guideX

Grazie intrepidis, nel mio caso il tuo suggerimento ha funzionato per me. Saluti!
user752746

15

Questo potrebbe non rispondere alla tua domanda ma mi sono sbattuto la testa con gli stessi sintomi con una nuova installazione di IIS. CSS, JS e immagini non venivano visualizzati. Era dovuto al fatto che il ruolo "Contenuto statico" non veniva installato in IIS 7.5.


Potresti avere un problema diverso e il mio problema era quando sposto la directory da inetpub rimuove le autorizzazioni quando ripristino il mio problema è stato risolto.
Imran Rashid,

7

Probabilmente hai l'autenticazione di Windows abilitata in web.config. Su un computer locale, le credenziali di Windows vengono passate automaticamente e funziona. Su un sito live, sei trattato come un utente anonimo (l'impostazione di IE può controllarlo, ma non modificarlo a meno che tu non sappia davvero cosa stai facendo).

Ciò provoca quanto segue:

  • È richiesto il login esplicito.
  • Risorse come script e CSS non vengono offerte nella pagina di accesso perché non sei autenticato.

Questo non è rotto, funziona solo come previsto, ma per "risolvere" questo:

  • Modificare il tipo di autenticazione in web.config se non si desidera alcun accesso.
  • E / o aggiungi un web.config nella directory che contiene CSS, immagini, script, ecc. Che specifica le regole di autorizzazione.

la modalità di autenticazione è Form non finestra? il file di configurazione dell'applicazione web ha la precedenza sulla configurazione della macchina? C'è qualche impostazione in IIS che sta causando questo?
Imran Rashid,

L'autenticazione basata su moduli attiverà anche una richiesta di accesso e impedirà la pubblicazione di risorse come script e immagini. Vedi le altre risposte per le modifiche specifiche che dovresti apportare a web.config. Il salvataggio delle impostazioni in IIS modificherà la configurazione Web.
Tim Medora,

Lo risolvo da solo. Il problema sorge quando condivido la cartella wwwroot sulla mia rete. Cambia l'autorizzazione della directory. Quando annulla la condivisione e imposto le autorizzazioni predefinite Si è risolto :) Grazie Tim
Imran Rashid del

6

Aggiungi questo al tuo web.config

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

Il percorso è relativo, a volte l'aggiunta della radice risolverà questo problema. Prova a impostare il percorso su"~/Images"
StuperUser

6

Usa questo nella sezione di configurazione del tuo file 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>

6

È stato un problema con i permessi di Windows, ho spostato la cartella che eredita i permessi errati. Quando passo alla cartella wwwroot e aggiungo l'autorizzazione a questo utente, inizia a funzionare correttamente.


1
Ho avuto lo stesso problema, ho appena spostato i file di progetto desktopnella wwwroot cartella, inoltre ho aggiunto il pieno controllo al servizio di rete, che è correlato al pool di applicazioni.
mihkov,

3

Per me aggiungendo questo nel web.configrisolto il problema

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

2

La mia ora di dolore era dovuta alla definizione dei tipi MIME in web.config. Ne avevo bisogno per il server di sviluppo, ma IIS locale lo odiava perché duplicava i tipi MIME ... una volta rimossi dal web.config il problema con js, css e le immagini che non venivano caricate spariva.


Difficile credere che possano essere tipi MIME duplicati! Ho setacciato per almeno un'ora tentando diverse autorizzazioni utente, ecc. Ecc. Ma alla fine è stato duplicato MIME nel mio web.config: - |
Aaron Hudon,

2

Questo è un problema di autenticazione. Nel mio caso, ha risolto i seguenti passaggi: 1- Vai al gestore IIS, nel riquadro di sinistra, espandi la radice del server e seleziona la tua applicazione web dal nodo Siti. 2- Nella schermata principale, vai alla sezione IIS e seleziona Autenticazione. 3- Abilita autenticazione anonima. 4- Quindi, selezionare Modifica e impostare Modifica credenziali di autenticazione anonima sull'identità del pool di applicazioni.

Credenziali di autenticazione anonime


Ho seguito gli stessi passaggi e il problema è stato risolto. Grazie Alireza.
Arvind Gautam,

1

Nel mio caso,

IIS può caricare tutto con localhost, ma non è riuscito a caricare i miei file di modello app.tagda192.168.0.123

perché l' .tagestensione non era nell'elenco.

Tipi di MIME IIS


1

Per risolvere questo problema:

Vai a Internet Information Service (IIS)

Fare clic sul sito Web su cui si sta tentando di caricare l'immagine

Nella sezione IIS, apri il menu Autenticazione e abilita anche l'autenticazione di Windows.


1

Un suggerimento che ho trovato utile in passato durante lo sviluppo di siti nell'ambiente di test localhost quando si lavora con una copia del sito di produzione. Assicurati di commentare i tag canonici:

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

1

Se hai provato tutte le soluzioni di cui sopra e hai ancora problemi, prendi in considerazione l'utilizzo del metodo ResolveClientUrl () di ASP.NET.

Uno script per esempio:

Invece di usare

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

Usa il metodo

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

Questa era la mia soluzione che funzionava per un amico che stavo aiutando!


1

Ho avuto lo stesso problema. Per me, era dovuto al fatto che l'intestazione Cache-Control veniva impostata a livello di server in IIS su no-cache, no-store. Quindi per la mia applicazione ho dovuto aggiungere quanto segue al mio web.config:

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

0

Una possibile causa di ciò è che l'applicazione prevede di essere eseguita sulla porta 443 (porta SSL standard) e la porta 443 è già in uso. Mi sono imbattuto in questo diverse volte con gli sviluppatori che cercavano di eseguire la nostra applicazione mentre Skype è in esecuzione sui loro computer.

Incredibilmente, Skype funziona sulla porta 443. Questo è un orribile difetto di progettazione secondo me. Se vedi l'applicazione che tenta di essere eseguita su 444 anziché 443, chiudi Skype e il problema scompare.


0

Ho aggiunto app.UseStaticFiles();questo codice in starup.cs del metodo Configure, che è stato risolto.

E controlla la tua autorizzazione su questa cartella.


0

Per immagini

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

su uno stile usa questo

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

0

Nel mio caso in cui nessuno dei miei file javascript, png o css veniva caricato, ho provato la maggior parte delle risposte sopra e nessuno sembrava fare il trucco.

Alla fine ho trovato " Filtri richieste " e in realtà ho dovuto aggiungere .js, .png, .css come tipo di file abilitato / accettato.

Una volta apportata questa modifica, tutti i file venivano offerti correttamente.


0

Se visualizzi 403 errori nella console del browser, controlla la configurazione del pacchetto MVC. I nomi dei pacchetti non devono corrispondere ai nomi di cartelle esistenti nel progetto.

per esempio.

bundles.Add(new StyleBundle("~/Content/css")...

... causerebbe problemi per IIS se la struttura della cartella $ (ProjectDir) \ Content \ css esiste nel tuo progetto, poiché prova a cercare nella cartella esistente il contenuto del bundle che non c'è.

Invece usa qualcosa come:

bundles.Add(new StyleBundle("~/Content/cssbundle")...

0

Questo problema si verifica quando IIS non esegue il rendering dei contenuti statici come i file JS, CSS, Image.

Per risolvere questo problema, è necessario seguire i passaggi seguenti:

Vai a Pannello di controllo> Attiva o disattiva le funzionalità di Windows> Internet Information Services> World Wide Web Services> Funzionalità HTTP comuni> Contenuto statico.

Assicurarsi che il contenuto statico sia attivato.

Bingo. E il gioco è fatto. Ricaricare la pagina e sarà possibile visualizzare tutti i contenuti statici.


0

Ho avuto esattamente lo stesso problema, ho provato tutti i suggerimenti ma non ho ottenuto nulla. Mi ha infastidito ore. Ho scoperto che il mio ISP ha bloccato la porta 80 per alcuni motivi.

Consiglio: controlla il tuo traffico. Assicurarsi che la porta 80 funzioni sia localmente (ad es. Firewall) che esternamente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.