web-dev-qa-db-fra.com

Message d'erreur détaillé 500, ASP + IIS 7.5

IIS 7.5, 2008rc2, asp classique, 500 msg d'erreur:

La page ne peut pas être affichée car une erreur de serveur interne s'est produite.

J'ai besoin de savoir comment configurer IIS pour obtenir une erreur plus détaillée.
J'ai essayé de définir sur true toutes les options de débogage dans la configuration ASP.
Mais cela n'a pas fonctionné. Quelqu'un peut-il m'aider?

183
egidiocs

Je suis venu au même problème et corrigé le même façon que Alex K .

Donc, si "Send Errors To Browser" ne fonctionne pas, définissez également ceci:

Pages d'erreur -> 500 -> Modifier les paramètres de fonction -> "Erreurs détaillées"

enter image description here

Notez également que si le contenu de la page d'erreur renvoyée est assez court et que vous utilisez IE, IE ignorera volontiers le contenu utile renvoyé par le serveur et vous montrera sa propre page d'erreur générique. Vous pouvez désactiver cette option dans les options d'IE ou utiliser un autre navigateur.

223
Vaclav Elias

Si vous êtes sur un serveur distant, vous pouvez configurer votre fichier web.config comme suit:

<configuration>
<system.webServer>
    <httpErrors errorMode="Detailed" />
    <asp scriptErrorSentToBrowser="true"/>
</system.webServer>
<system.web>
    <customErrors mode="Off"/>
    <compilation debug="true"/>
</system.web>
89
safhac

Double-cliquez sur "ASP" dans l'écran d'accueil du site dans IIS admin, développez "Propriétés de débogage", activez "Envoyer les erreurs au navigateur", puis cliquez sur "Appliquer".

Sous "Pages d'erreur" sur l'écran d'accueil, sélectionnez "500", puis "Modifier les paramètres de fonction" et sélectionnez "Erreurs détaillées".

Notez que les mêmes étapes s'appliquent à IIS 8.0 (Windows Server 2012).

46
Alex K.

Après avoir essayé Vaclav et Alex répondre, il me restait à désactiver "Afficher les messages d'erreur HTTP conviviaux" dans IE

enter image description here

42
Tim Partridge

Dans web.config sous

<system.webServer>

remplacer (ou ajouter) la ligne

<httpErrors errorMode="Detailed"></httpErrors>

avec

<httpErrors existingResponse="PassThrough" errorMode="Detailed"></httpErrors>

En effet, par défaut, IIS7 intercepte les codes d’état HTTP tels que 4xx et 5xx générés par des applications plus avancées dans le pipeline.

Activez ensuite "Envoyer les erreurs au navigateur" dans la section "ASP" et sous "Pages d'erreur/Modifier les paramètres de fonction", sélectionnez "Erreurs détaillées".

En outre, attribuez autorisations d'écriture sur le dossier du site Web au groupe intégré IIS_IUSRS.

20
Niente00

TLDR: Déterminez d’abord l’origine de l’erreur dans le pipeline (recherchez des captures d’écran ressemblant à votre erreur), effectuez les modifications nécessaires pour obtenir quelque chose de nouveau, répétez.

Déterminez d'abord le message d'erreur que vous voyez réellement.

Si vous voyez le fichier situé ici ...

% SystemDrive%\inetpub\custerr \\ 500.htm

... qui ressemble généralement à ceci:

IIS Default 500 error

... alors vous savez que vous voyez la page d'erreur actuellement configurée dans ** IIS ** et vous n'avez PAS besoin de modifier le paramètre customErrors, erreur ASP. détail, ou "montrer les erreurs HTTP amicales" paramètre du navigateur.

Vous voudrez peut-être consulter le chemin référencé ci-dessus au lieu de faire confiance à ma capture d'écran au cas où quelqu'un le modifierait.

"Oui, je vois l'erreur décrite ci-dessus ..."

Dans ce cas, vous voyez le réglage de < httpErrors > ou dans IIS Manager, c'est Pages d'erreur -> Modifier les paramètres de fonctionnalité. La valeur par défaut est errorMode = DetailedLocalOnly au niveau du nœud du serveur (par opposition au niveau du site) , ce qui signifie que vous verrez cette page d'erreur configurée. à distance, vous devriez pouvoir vous connecter localement au serveur et voir l’erreur complète qui devrait ressembler à ceci:

Detailed HTTP Error

Vous devriez avoir tout ce dont vous avez besoin à ce stade pour corriger l'erreur actuelle.

"Mais je ne vois pas l'erreur détaillée même en naviguant sur le serveur"

Cela laisse quelques possibilités.

  1. Le navigateur que vous utilisez sur le serveur est configuré pour utiliser un proxy dans ses paramètres de connexion afin que celui-ci ne soit pas considéré comme "local".
  2. Vous ne naviguez pas réellement sur le site que vous pensez consulter - cela se produit généralement lorsqu'un équilibreur de charge est impliqué. Faites un test de ping pour voir si le DNS vous donne une adresse IP sur le serveur ou ailleurs.
  3. Vous êtes httpErrors paramètres du site est défini pour "Personnalisé" uniquement. Changez-le en "DetailedLocalOnly". Toutefois, si vous rencontrez une erreur de configuration, il est possible que cela ne fonctionne pas, car httpErrors au niveau du site est également un élément de configuration. Dans ce cas, passez à # 4
  4. La valeur par défaut pour httpErrors pour tous les sites est définie sur "Personnalisé". Dans ce cas, vous devez cliquer sur le nœud de serveur de niveau supérieur dans IIS Manager (et non sur un site particulier) et modifier les paramètres httpErrors à DetailedLocalOnly. S'il s'agit d'un serveur interne et que vous ne craignez pas de divulguer des informations sensibles, vous pouvez également le définir sur "Détaillé", ce qui vous permettra de voir l'erreur des clients autres que le serveur.

"La connexion au serveur n'est pas une option pour moi"

Changez le httpErrors de votre site en "Détaillé" afin que vous puissiez le voir à distance. Mais si cela ne fonctionne pas, votre erreur est peut-être déjà une erreur de configuration, voir n ° 3 ci-dessus. Donc, vous êtes peut-être coincé avec # 4 et vous allez avoir besoin de quelqu'un de votre équipe de serveurs.

"Je ne vois pas la page d'erreur décrite ci-dessus. Je vois quelque chose de différent"

Si tu vois ça ...

enter image description here

... et vous vous attendez à voir quelque chose comme ça ...

enter image description here

... alors vous devez remplacer "Envoyer les erreurs au navigateur" par true dans IIS Manager, sous Site -> IIS -> ASP - > Propriétés de débogage

Si tu vois ça ...

ie friendly errors 1

ou ca...

ie friendly errors 2

... vous devez désactiver les erreurs faciles dans votre navigateur ou utiliser la vue Web de fiddler pour consulter la réponse réelle par rapport à ce que votre navigateur choisit de vous afficher.

Si tu vois ça ...

Custom errors enabled

... alors les erreurs personnalisées fonctionnent, mais vous n'avez pas de page d'erreur personnalisée (bien sûr, à ce stade, parlions de .net et non d'asp classique). Vous devez modifier votre balise customErrors dans votre Web.config en RemoteOnly pour afficher sur le serveur ou Off pour afficher à distance.

Si vous voyez quelque chose qui ressemble à votre site, alors les erreurs personnalisées sont probablement activées ou distantes et affichent la page personnalisée (vues-> partagées-> erreur.cshtml dans MVC, par exemple). Cela dit, il est peu probable mais possible que quelqu'un modifie les pages dans IIS pour httpErrors. Reportez-vous à la première section à ce sujet.

15
b_levitt

essayez de définir la valeur de l'attribut httpErrors "existingResponse" sur "PassThrough". Le mien était réglé sur "Remplacer", ce qui empêchait l'affichage de YSOD.

<httpErrors errorMode="Detailed" existingResponse="PassThrough">
9
Dana Benson

Une chose dont personne n'a parlé est une solution très rapide et temporaire. Vous pouvez afficher l'erreur sur l'hôte local de ce serveur Web.

6
RandomUs1r

Les gens de Fot qui ont essayé TOUT et ne peuvent tout simplement pas afficher les détails de l'erreur, comme moi, c'est une bonne idée de vérifier les différents niveaux de configuration. J'ai un fichier de configuration au niveau du site Web et au niveau de l'application (à l'intérieur du site Web), vérifiez les deux. En outre, il est également apparu que les erreurs détaillées étaient désactivées sur le nœud le plus élevé de IIS (juste sous la page de démarrage, son nom est identique à celui du nom de serveur Web). Vérifiez les pages d'erreur ici.

3
Jon Koeter

Vous pouvez également vérifier que si vous avez changé le dossier de votre site Web principal (c:\inetpub\wwwroot) dans un autre dossier, vous devez autoriser en lecture le groupe IIS_IUSRS dans le nouveau dossier.

3
Rogerio Barretto

Je l'ai trouvé.

http://blogs.iis.net/ksingla/archive/2009/02/16/iis-7-5-updates-to-custom-errors-and-compression.aspx

lancez cmd en tant qu'administrateur, allez dans votre dossier system32\inetsrv et exécutez:

appcmd.exe set config -section:system.webServer/httpErrors -allowAbsolutePathsWhenDelegated:true

Maintenant, je peux voir les erreurs asp détaillées.

1
egidiocs

Si vous exécutez le navigateur sur le serveur et testez votre URL du projet avec l'adresse IP locale, vous avez reçu toutes les erreurs de ce projet sans page d'erreur générale (par exemple, 500 pages d'erreur).

1
Ali Rasouli