CSS, Images, JS ne se chargent pas dans IIS

126

Toutes mes applications fonctionnaient bien mais tout à coup, tous les sites sous IIS ne chargent pas de css, d'images, de scripts. Il redirige vers la page de connexion.

Si je me connecte, cela fonctionne bien. par exemple, mysite.com/Account/LogOn?ReturnUrl=%2fpublic%2fimages%2ficons%2f41.png

Sur ma machine locale, cela fonctionne bien sans connexion.

Imran Rashid
la source
mauvais balisage, pas de vraie question ...
Renatas M.
3
Revenir à la version balisée car je pense savoir ce qui cause ce comportement et les balises sont pertinentes. Sinon, je voterai pour clore.
Tim Medora
Ce n'est pas un problème avec cette configuration Web, j'ai essayé toutes les réponses. Je pense que c'est un problème avec IIS parce que tous les sites fonctionnaient bien avant de déployer une application, cela affecte tout sur iis
Imran Rashid
@ImranRashid - Ce site hérite-t-il des paramètres d'un autre site dans IIS?
Tim Medora
@Tim Medora - Non monsieur, il n'hérite pas d'un autre site.
Imran Rashid

Réponses:

185

Le problème peut être qu'IIS ne diffuse pas de contenu statique, que vous pouvez configurer ici: entrez la description de l'image ici

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

Windows 10:

version Windows 10 de la boîte de dialogue ci-dessus

Matt Kocaj
la source
2
J'ai eu un problème similaire, j'ai réalisé que c'était un problème d'installation, mais l'activation du contenu statique semble l'avoir résolu!
ife labolz
5
Cela a sauvé mon bacon, on pourrait penser que cela a été activé par défaut, mais sur Windows 10, ce n'est pas le cas.
Justin
3
Lame ce n'est pas vérifié par défaut.
RayLoveless
3
@RayLoveless Je pense que ce qui est nul, c'est que MVC dépend fortement de l'activation de cette fonctionnalité IIS pour que le contenu statique fonctionne dans MVC. Je pense qu'ils ne devraient pas être si couplés. Peut-être que .NET Core résoudra ce problème. : p
Matt Kocaj
2
Et nous voilà de nouveau sauvés par la même réponse, 2 ans après la dernière fois.
Eric Wu le
176

J'ai eu le même problème, une page non authentifiée ne chargerait pas le CSS, le JS et les images lorsque j'ai installé mon application Web dans ASP.Net 4.5 dans IIS 8.5 sur Windows Server 2012 R2.

  1. J'ai installé le rôle de contenu statique
  2. Mon application Web se trouvait dans le dossier wwwroot d'IIS et toutes les autorisations du dossier Windows étaient intactes (celles par défaut, y compris IIS_IUSRS)
  3. J'ai ajouté une autorisation pour tous les dossiers qui contenaient le CSS, le JS et les images.
  4. J'avais le dossier de l'application Web sur un partage Windows, j'ai donc supprimé le partage comme suggéré par @ imran-rashid

Pourtant, rien ne semblait résoudre le problème. Ensuite, j'ai finalement essayé de définir l'identité de l'utilisateur anonyme sur l'identité du pool d'applications et cela a commencé à fonctionner.

Cliquez sur la fonction d'authentification Modifier l'authentification anonyme Modifier l'identité du pool d'applications

Je me suis cogné la tête pendant quelques heures et j'espère que cette réponse sauvera l'agonie de mes collègues développeurs.

J'aimerais vraiment savoir pourquoi cela fonctionne. Des pensées?

Moiz Tankiwala
la source
1
Cela a également fonctionné pour moi. Je crois que c'est parce que «l'utilisateur spécifique» n'avait pas d'autorisations sur l'emplacement du dossier, là où l'identité du pool d'applications le fait.
dcinadr
4
Quelques heures ? Cela m'a pris plus de 4. Merci mon Dieu, ça m'a aidé :)
Tito
3
J'ai eu ce problème soudainement, après avoir partagé le dossier wwwroot. Votre solution l'a corrigé. Merci d'avoir pris le temps de l'ajouter et du détail.
Ressource
1
LÉGENDE! Merci beaucoup
David
1
C'est la deuxième fois que je dois rechercher votre message, car cela m'a sauvé deux fois maintenant. Je vous voterais 100x si je le pouvais. Utilisait Umbraco - configurez mon IIS local à l'aide de Documents \ Visual Studio 2013 \ Projects - ajouté CPUName\IIS_IUSRSet ne se charge toujours pas. Merci encore!
Rob Scott
18

J'ai eu une erreur similaire, ma console ressemblait à ceci:

Erreur

Mon problème était que j'exécutais mon site dans un sous-dossier car la société utilisait un domaine principal et aucun sous-domaine. Comme ça:

host.com/app1

host.com/app2

Mon code ressemblait à ceci pour inclure des scripts qui fonctionnaient bien sur localhost mais pas dans app1 ou app2:

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

Ajout d'un signe tilde ~à src, puis tout a fonctionné:

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

Explication de ~vs /:

  • / - Racine du site
  • ~/ - Répertoire racine de l'application

/retournera la racine du site ( http://host.com/),

~/retournera la racine de l'application ( http://host.com/app1/).

Ogglas
la source
1
vote. J'avais ce problème, l'application ne chargeait rien sur scène mais se chargeait en production. J'utilise aussi @ Url.Content () avec ~ /. Non testé en production, mais je pense que cela fonctionnera
Kross
17

Essayez de supprimer la section staticContent de votre web.config .

<system.webServer>
    <staticContent>
        ...
    </staticContent>
</system.webServer>
intrépidis
la source
La suppression de staticContent fonctionne mais maintenant toutes mes polices sont 404?
Rajesh Sivasankaran
Je ne suis pas un expert en la matière, mais vous devez peut-être ajouter les déclarations de type MIME correctes pour vos polices via le gestionnaire IIS dans l'onglet En-têtes HTTP des propriétés du site Web.
intrepidis
1
Cela a résolu le problème pour moi, car j'ai des entrées de fichier .woff en développement, mais en production, la même configuration doit être
ajustée
Merci intrépidis, dans mon cas, votre suggestion a fonctionné pour moi. À votre santé!
user752746
15

Cela pourrait ne pas répondre à votre question, mais je me suis cogné la tête avec les mêmes symptômes avec une nouvelle installation IIS. CSS, JS et images n'apparaissaient pas. Cela était dû au fait que le rôle «Contenu statique» n'était pas installé dans IIS 7.5.

user23462
la source
Vous pourriez avoir un problème différent et mon problème était lorsque je déplace le répertoire de inetpub, il supprime les autorisations lorsque je rétablis mon problème a été résolu.
Imran Rashid
7

Vous avez probablement activé l'authentification Windows dans votre web.config. Sur une machine locale, vos informations d'identification Windows sont automatiquement transmises et cela fonctionne. Sur un site en direct, vous êtes traité comme un utilisateur anonyme (le paramètre IE peut contrôler cela, mais ne le modifiez pas sauf si vous savez vraiment ce que vous faites).

Cela provoque ce qui suit:

  • Vous devez vous connecter explicitement.
  • Les ressources telles que les scripts et CSS ne sont pas servies sur la page de connexion car vous n'êtes pas authentifié.

Ce n'est pas cassé, fonctionne juste comme prévu, mais pour "réparer" ceci:

  • Modifiez le type d'authentification dans le fichier web.config si vous ne souhaitez pas de connexion.
  • Et / ou ajoutez un web.config dans le (s) répertoire (s) contenant CSS, images, scripts, etc. qui spécifie les règles d'autorisation.
Tim Medora
la source
le mode d'authentification est-ce que les formulaires ne sont pas une fenêtre? le fichier de configuration Web de l'application remplace la configuration de la machine? Y a-t-il un paramètre dans IIS qui en est la cause?
Imran Rashid
L'authentification par formulaire déclenchera également une invite de connexion et empêchera les ressources telles que les scripts et les images d'être servies. Voir les autres réponses pour les modifications spécifiques que vous auriez besoin d'apporter à web.config. L'enregistrement des paramètres dans IIS modifiera la configuration Web.
Tim Medora
Je le résolve moi-même. Le problème survient lorsque je partage le dossier wwwroot sur mon réseau. Cela change l'autorisation du répertoire. Lorsque je désactive le partage et que je définis l'autorisation par défaut. Il a résolu :) Merci Tim
Imran Rashid
6

Ajoutez ceci à votre web.config

<location path="Images">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>
Mathias F
la source
Le chemin est relatif, parfois l'ajout de la racine résoudra ce problème. Essayez de définir le chemin vers"~/Images"
StuperUser
6

Utilisez ceci dans la section de configuration de votre fichier 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>
Rohit Vyas
la source
6

C'était un problème de permission Windows, je déplace le dossier qui hérite des mauvaises autorisations. Lorsque je passe au dossier wwwroot et que j'ajoute l'autorisation à l'utilisateur iis, cela commence à fonctionner correctement.

Imran Rashid
la source
1
J'ai eu le même problème, il suffit déplacé les fichiers de projet à partir desktopde wwwroot dossier, en plus je l' ai ajouté un contrôle total au service du réseau, qui est lié au pool d'applications.
mihkov
3

Pour moi, ajouter cela dans le web.configrésolu le problème

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

Mon heure de douleur était due à la définition des types MIME dans le web.config. J'en avais besoin pour le serveur de développement, mais IIS local le détestait car il dupliquait les types MIME ... une fois que je les ai supprimés du web.config, le problème avec js, css et les images ne se chargeant pas a disparu.

peroija
la source
Difficile de croire qu'il peut s'agir de types MIME en double! J'ai parcouru pendant au moins une heure en essayant différentes autorisations utilisateur, etc., mais cela a fini par être des MIME dupliqués dans mon web.config: - |
Aaron Hudon
2

Il s'agit d'un problème d'authentification. Dans mon cas, cela a été résolu par les étapes ci-dessous: 1- Allez dans le gestionnaire IIS, dans le volet gauche, développez la racine du serveur et sélectionnez votre application Web à partir du nœud Sites. 2- Dans l'écran d'accueil, allez dans la section IIS et sélectionnez Authentification. 3- Activez l'authentification anonyme. 4- Ensuite, sélectionnez Modifier et définissez Modifier les informations d'identification d'authentification anonymes sur Identité du pool d'applications.

Identifiants d'authentification anonymes

Alireza Abdollahnejad
la source
J'ai suivi les mêmes étapes et le problème a été résolu. Merci Alireza.
Arvind Gautam
1

Dans mon cas,

IIS peut tout charger avec localhost, mais n'a pas pu charger mes fichiers app.tagde modèle à partir de192.168.0.123

car l' .tagextension ne figurait pas dans la liste.

Types IIS MIME

Hiep
la source
1

Pour résoudre ce problème:

Accédez à Internet Information Service (IIS)

Cliquez sur votre site Web sur lequel vous essayez de charger l'image

Dans la section IIS, ouvrez le menu Authentification et activez également l'authentification Windows.

Naijalivemedia
la source
1

Une suggestion que j'ai trouvée utile dans le passé lors du développement de sites dans l'environnement de test localhost lorsque vous travaillez avec une copie du site de production. Assurez-vous de commenter les balises canoniques:

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

Si vous avez essayé toutes les solutions ci-dessus et que vous rencontrez toujours des problèmes, envisagez d'utiliser la méthode ResolveClientUrl () d'ASP.NET.

Un script par exemple:

À la place d'utiliser

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

Utilisez la méthode

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

C'était ma solution qui fonctionnait pour un ami que j'aidais!

KeitelDOG
la source
1

J'ai eu le même problème. Pour moi, cela était dû au fait que l'en-tête Cache-Control était défini au niveau du serveur dans IIS sur no-cache, no-store. Donc, pour mon application, j'ai dû ajouter ci-dessous à mon web.config:

<httpProtocol>
    <customHeaders>
        <remove name="Cache-Control" />
    </customHeaders>
</httpProtocol>
Daniel Cox
la source
0

Une cause possible est que votre application s'attend à s'exécuter sur le port 443 (port SSL standard) et que le port 443 est déjà utilisé. J'ai rencontré cela plusieurs fois avec des développeurs essayant d'exécuter notre application pendant que Skype s'exécute sur leurs ordinateurs.

Incroyablement, Skype fonctionne sur le port 443. Il s'agit à mon avis d'un horrible défaut de conception. Si vous voyez votre application essayer de s'exécuter sur 444 au lieu de 443, arrêtez Skype et le problème disparaîtra.

Robert MacGrogan
la source
0

J'ai ajouté app.UseStaticFiles();ce code dans starup.cs de la méthode Configure, puis il est corrigé.

Et vérifiez votre autorisation sur ce dossier.

Metin Atalay
la source
0

Pour l'utilisation d'images

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

sur un style, utilisez ceci

style="background-image:url(@Url.Content("~/assets/bg4.jpg"))
Maximiliano Cesán
la source
0

Dans mon cas, quand aucun de mes fichiers javascript, png ou css n'était chargé, j'ai essayé la plupart des réponses ci-dessus et aucune ne semblait faire l'affaire.

J'ai finalement trouvé " Request Filters ", et j'ai en fait dû ajouter .js, .png, .css comme type de fichier activé / accepté.

Une fois que j'ai effectué ce changement, tous les fichiers ont été servis correctement.

Merr Leader
la source
0

Si vous voyez des erreurs 403 dans la console de votre navigateur, vérifiez votre configuration MVC Bundle. Les noms de bundle ne doivent correspondre à aucun nom de dossier existant dans votre projet.

par exemple.

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

... causerait des problèmes pour IIS si la structure de dossier $ (ProjectDir) \ Content \ css existe dans votre projet, car elle essaie de rechercher dans le dossier existant le contenu du bundle qui n'y est pas.

Au lieu de cela, utilisez simplement quelque chose comme:

bundles.Add(new StyleBundle("~/Content/cssbundle")...
ShhTot
la source
0

Ce problème se produit lorsque IIS ne rend pas le contenu statique comme vos fichiers JS, CSS, image.

Pour résoudre ce problème, vous devez suivre les étapes ci-dessous:

Allez dans Panneau de configuration> Activer ou désactiver les fonctionnalités Windows> Services Internet> Services World Wide Web> Fonctionnalités HTTP communes> Contenu statique.

Assurez-vous que le contenu statique est activé.

Bingo. Et vous avez terminé. Rechargez la page et vous pourrez voir tout le contenu statique.

Aman Agarwal
la source
0

J'ai eu exactement le même problème, j'ai essayé toutes les suggestions mais je n'ai rien obtenu. M'a dérangé des heures. Il s'est avéré que mon FAI a bloqué le port 80 pour certaines raisons.

Conseil: vérifiez votre trafic. Assurez-vous que le port 80 fonctionne à la fois localement (par exemple, pare-feu) et externe.

wahaha
la source