web-dev-qa-db-fra.com

CSS, Images, JS ne se chargeant pas IIS

Toutes mes applications fonctionnaient correctement, mais soudainement, tous les sites sous IIS ne chargent plus les fichiers css, les images, les scripts. Il redirige vers la page de connexion. 

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

Sur ma machine locale, cela fonctionne bien sans connexion.

104
Imran Rashid

C’est un problème d’autorisation Windows qui déplace le dossier car il hérite des autorisations erronées. Lorsque je passe au dossier wwwroot et que je donne la permission à l'utilisateur iis, il commence à fonctionner correctement.

6
Imran Rashid

Le problème peut être que IIS ne sert pas de contenu statique, que vous pouvez configurer ici: enter image description here

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

160
Matt Kocaj

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

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

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

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

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?

139
Moiz Tankiwala

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

 error

Mon problème était que je courais mon site dans un sous-dossier puisque la compagnie utilisait un domaine supérieur 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 de site
  • ~/ - Répertoire racine de l'application

/ renverra la racine du site (http://Host.com/),

~/ renverra la racine de l'application (http://Host.com/app1/).

16
Ogglas

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 les images ne se présentaient pas. Cela était dû au fait que le rôle "Contenu statique" n'avait pas été installé dans IIS 7.5.

14
user23462

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

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

L'authentification Windows est probablement activée dans votre web.config. Sur un ordinateur local, vos informations d'identification Windows sont automatiquement transmises et cela fonctionne. Sur un site actif, 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 les CSS ne sont pas servies sur la page de connexion car vous n'êtes pas authentifié.

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

  • Modifiez le type d'authentification dans le fichier web.config si vous ne souhaitez pas vous connecter.
  • Et/ou ajoutez un fichier web.config dans le (s) répertoire (s) contenant le CSS, les images, les scripts, etc., qui spécifie les règles d'autorisation.
6
Tim Medora

Ajoutez ceci à votre web.config

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

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>
5
Rohit Vyas

Pour moi, ajouter ceci dans le web.config a résolu le problème

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

Pour résoudre ce problème:

Accéder au service Internet (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.

1
Naijalivemedia

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, je devais ajouter ce qui suit dans mon web.config:

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

Dans mon cas, 

IIS peut tout charger avec localhost, mais n'a pas pu charger mes fichiers de modèle app.tag à partir de 192.168.0.123

parce que l'extension .tag n'était pas dans la liste.

 IIS MIME types

1
Hiep

Mon heure de douleur était due à la définition des types MIME dans le web.config. J'avais besoin de cela pour le serveur de développement, mais le local IIS le détestait parce qu'il dupliquait les types MIME ... une fois que je les retirais du fichier web.config, le problème avec js, css et les images ne se chargeant pas disparaissait.

1
peroija

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

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

Si vous avez essayé toutes les solutions ci-dessus et avez toujours des problèmes, envisagez d'utiliser la méthode ResolveClientUrl () de 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!

1
KeitelDOG

Une des causes possibles de ceci est que votre application s'attend à être exécutée sur le port 443 (port SSL standard) et que le port 443 est déjà utilisé. Je l'ai rencontré à plusieurs reprises avec des développeurs qui essayaient d'exécuter notre application alors que Skype s'exécutait sur leurs ordinateurs.

Incroyablement, Skype fonctionne sur le port 443. C’est un défaut de conception horrible à mon avis. Si votre application tente de s'exécuter sur 444 au lieu de 443, fermez Skype et le problème disparaîtra.

0
Robert MacGrogan

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

Et vérifiez votre autorisation sur ce dossier.

0
Metin Atalay

Pour les images utiliser

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

sur un style utiliser cette

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