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.
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.
Le problème peut être que IIS ne sert pas de contenu statique, que vous pouvez configurer ici:
Source: http://adilmughal.com/blog/2011/11/iis-7-not-loading-css-and-image/
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.
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.
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?
J'ai eu une erreur similaire, ma console ressemblait à ceci:
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/
).
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.
Essayez de supprimer la section staticContent de votre web.config .
<system.webServer>
<staticContent>
...
</staticContent>
</system.webServer>
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:
Ce n'est pas cassé, ça fonctionne comme prévu, mais pour "réparer" ceci:
Ajoutez ceci à votre web.config
<location path="Images">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
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>
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>
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.
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>
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.
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/">//-->
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!
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.
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.
Pour les images utiliser
@Url.Content("~/assets/bg4.jpg")
sur un style utiliser cette
style="background-image:url(@Url.Content("~/assets/bg4.jpg"))