IIS 7.5 ne charge pas les pages html statiques

10

Un IIS 7.5 vient d'être installé sur un serveur dédié. Application Web ASP.NET 4.0 copiée dans son dossier, un nouveau site Web est créé sur sa propre IP sur le post 80, les comptes IIS_IUSR et IUSR ont des droits de lecture / exécution sur le dossier du site, le site est affecté à son propre pool d'applications intégré avec 4.0 .NET (J'ai essayé la piscine classique avec les mêmes résultats).

Le problème: lorsque j'essaie d'accéder à ce site Web, le navigateur charge uniquement le contenu généré par les ressources .NET telles que les pages aspx, les fichiers .axd, etc. Les images statiques, les fichiers statiques js, css et html sont dans la source de la page mais IIS ne le fait pas ne les sers pas. Les outils de développement de tous les navigateurs se plaignent que toutes ces ressources statiques ont été envoyées par le serveur avec un type de contenu incorrect (texte brut au lieu de l'image, des styles, etc.). Qu'est-ce que je fais mal?

Kizz
la source
Que voyez-vous dans Fiddler (ou Firebug)?
SLaks
Si c'est possible, exécutez la page sur le serveur, en particulier exécutez seul le contenu statique sur le serveur et vous obtenez un rapport d'erreur entièrement détaillé.
Aristos
Je n'utilise pas Firebug. Mais Chrome, par exemple, se plaint "Ressource interprétée comme Image mais transférée avec du texte de type MIME / plain" à propos d'un fichier jpg sur la page. La même chose pour tous les styles, js et pages html statiques. De plus, les charges dynamiques de scripts et html ne fonctionnent pas.
@ Aristos: Je l'ai fait. Le navigateur du serveur affiche la page de la même manière que les navigateurs externes. Aucune erreur, juste une page incomplète.
L'utilisateur exécutant le serveur Web a-t-il le droit de lire ces fichiers?
Luc M

Réponses:

12

IIS 7 / 7.5 a une nouvelle "fonctionnalité" - Services de rôle. Le message de rsbarro m'a rappelé qu'il existe un service de rôle qui est responsable du contenu statique. Il s'agit du serveur Web / des fonctionnalités HTTP communes / du contenu statique. Vérifiez si l'icône Types MIME est présente dans le Gestionnaire IIS, comme suggéré par rsbarro.

Dans le cas contraire, vous devez installer le service de rôle Contenu statique. Pour ce faire, sélectionnez:

  • Gestionnaire de serveur
  • Les rôles
  • Nœud de serveur Web (IIS) dans le volet gauche
  • faites défiler jusqu'à la fenêtre Services de rôle
  • voir si le service de rôle de contenu statique est installé.

D'après ce que vous décrivez, cela semble être votre problème.

En général, si IIS7 ne fait pas quelque chose que IIS6 a fait, la première chose à vérifier est de voir si le service de rôle correspondant est installé. J'espère que cela t'aides.

Vlad
la source
Rôle de contenu statique, comment ai-je pu manquer ça? Merci, j'ai résolu le problème parfaitement.
David Thomas Garcia
6

Sous IIS, accédez à votre site Web et consultez la section Types MIME (voir l'image ci-dessous). Assurez-vous que vous voyez des entrées dans cette liste pour .js, .css, .html, etc., et qu'elles ont le type MIME approprié spécifié. IIS 7.5 ne diffusera des pages que si un type MIME est spécifié. Par défaut, les types MIME de ces extensions sont configurés dans le applicationHost.configfichier situé dans le C:\Windows\system32\inetsrv\configdossier (vous devrez peut-être exécuter le bloc-notes en tant qu'administrateur pour afficher le fichier). Recherchez simplement .js et vous devriez trouver une entrée sous <mimeMap>dans l' <staticContent>élément.

types de mime iis

Ces paramètres peuvent être remplacés dans votre web.configfichier. S'ils le sont, ils apparaîtront à l'emplacement suivant dans web.config:

<system.webServer>
    <staticContent>
        <remove fileExtension=".js" />
    </staticContent>
</system.webServer>

Je commencerais certainement par vérifier là-bas. Si tout semble correct dans la section des types MIME, il est possible que vous ayez un module qui interfère avec les demandes de fichiers statiques (mais très probablement seulement si vous l'avez <modules runAllManagedModulesForAllRequests="true" />défini dans votre <system.webServer>section). Si tel est le cas, je supprimerais tous les modules installés dans votre web.configordinateur et voir si vous pouvez afficher les fichiers statiques, puis les lire un par un pour voir quel module est à l'origine du problème. Si vous ne pouvez pas le comprendre, je suggère de publier le contenu de votre web.config(ou du moins les sections system.webet system.webServer) dans la question.

rsbarro
la source
2

J'ai eu le même problème, mais mon pool d'applications fonctionnait sous un compte de domaine et cet utilisateur avait des droits sur le dossier du site Web. Mon site Web a rendu aspx mais aucun contenu statique. Ce qui a résolu mon problème a été d'ajouter le groupe IIS_IUSRS à la stratégie de sécurité locale appelée "emprunter l'identité d'un client après l'authentification". Le groupe IIS_IUSRS contenait mon compte de domaine. J'utilise le serveur Windows 2008 d'iis 7.5.

parttimeadjunct
la source
J'aimerais pouvoir voter plus d'une fois. Je suis venu à cette question en cherchant pourquoi mes fichiers .css n'étaient pas servis par IIS. Il était lié aux autorisations Windows sur les dossiers où ils étaient stockés.
2b77bee6-5445-4c77-b1eb-4df3e5