Comment diagnostiquer une erreur 500 Internal Server sur IIS 7.5 lorsque rien n'est écrit dans le journal des événements?

43

Je viens de déployer une mise à jour sur un site ASP.NET MVC3 existant (il était déjà configuré) et je reçois l'écran bleu IIS de la mort indiquant

Erreur HTTP 500.0 - Erreur interne du serveur
La page ne peut pas être affichée car une erreur interne du serveur s'est produite.

Toutefois; il n'y a rien dans le journal des événements de l'application où je m'attendrais à voir une description (plus) détaillée de l'entrée.

Comment puis-je diagnostiquer ce problème?

Greg B
la source
J'ai eu exactement le même problème ici. D'après mon expérience, si le journal des événements est vide, la demande n'a pas été correctement acheminée vers le processus de travail. Lors de l'un de nos récents déploiements, nous avons constaté que l'application fonctionnait de manière intermittente. Environ 50% des demandes échouaient de manière aléatoire avec l'erreur 500 et rien dans les journaux. Je soupçonne que quelque chose ne va pas avec le déchargement AppDomain qui se produit après le déploiement. Par curiosité, utilisez-vous un antivirus dans votre environnement de production? Une réinitialisation IIS résout-elle le problème (jusqu'au prochain déploiement)?
ShadowChaser

Réponses:

42

Jetez un coup d'œil à la fonction de suivi des demandes ayant échoué d'IIS7:

Dépannage des demandes ayant échoué à l'aide du suivi dans IIS 7
Dépannage avec le suivi des demandes ayant échoué

L'autre chose que je ferais serait de modifier votre <httpErrors>paramètre, car IIS est peut-être en train d'avaler un message d'erreur plus loin dans le pipeline:

<configuration>
  <system.webServer>
    <httpErrors existingResponse="PassThrough" />
  </system.webServer>
</configuration>

Si le site est écrit en ASP classique, veillez à activer le paramètre Envoyer les erreurs au navigateur dans la fonction de configuration ASP:

entrez la description de l'image ici

Enfin, si vous utilisez Internet Explorer, assurez-vous d'avoir désactivé Afficher les messages d'erreur HTTP conviviaux dans les paramètres avancés (bien que je suppose que vous l'ayez déjà fait ou que vous utilisiez un autre navigateur).

Kev
la source
2
existingResponse a été défini sur Remplacer. Merci pour le conseil.
Greg B
C'est une très bonne réponse mais elle pourrait être améliorée si elle incluait comment démarrer la fenêtre de configuration ASP.
Michael Potter
13

Dans mon cas:

  • Le journal des événements était vide.
  • web.config n'était pas corrompu - vérifié en utilisant la même chose sur la machine locale / en utilisant inetmgr

Finalement...

  • Vérification des journaux IIS a montré une demande comme celle-ci

...Chrome/57.0.2987.133+Safari/537.36 500 19 5 312

La clé étant:

sc-status sc-substatus sc-win32-status 500 19 5

qui avec un peu de googling m'a fait remarquer le IIS_USRSne pas avoir les autorisations de lecture sur le wwwdossier

décret
la source
2
J'ai trouvé la liste des codes d'état ici: support.microsoft.com/fr-fr/help/943891/…
mardi
4

Le problème le plus évident est celui des droits NTFS incorrects ou nuls sur le dossier de l'application Web. Assurez-vous donc que le compte qui dessert le site dispose des autorisations appropriées. Sans les droits NTFS appropriés sur le répertoire Web, ce que vous mettez dans le fichier web.config n'a pas d'importance, car il ne sera jamais lu.

Une vérification rapide peut consister à accorder à tous les droits complets. Si le site commence à fonctionner, vous savez alors que c'est un problème de droits et que vous pouvez alors décider d'attribuer les droits appropriés à un compte plus approprié.

rism
la source
1

Si vous effectuez une mise à niveau à partir d’IIS6, il se peut que l’un des Web.config fonctionne sur 6, mais pas dans IIS 7.5 ... Double-cliquez sur toutes les icônes d’IIS pour le site Web et vous risquez d’avoir une erreur de format (Section doit être en dessous d'une autre section ...)

M Hall
la source
0

J'ai eu le même problème avec une application Web Azure. Lors du débogage local, les messages d'erreur (JSON) renvoyés par les appels ajax ont été intégralement renvoyés au navigateur. Mais une fois déployés dans l'application Web, les messages ont été avalés et un message d'erreur 500 par défaut m'a été renvoyé. J'ai donc dû définir explicitement la existingResponsevaleur PassThroughdans la httpErrorsbalise web.config .

Loul G.
la source