2010-02-26 5 views
32

Je viens d'installer sur mon premier serveur Windows Server 2008/IIS7.5 pour un concours auquel je participe. Je ne peux pas pour la vie de moi comprendre comment désactiver la gestion des erreurs COMPLÈTEMENT. Les options que je vois sont:Désactiver le traitement des erreurs HTTP IIS7?

  • sur mesure
  • détaillée
  • détaillée locale, sur mesure pour distance

Je veux désactiver la fonctionnalité complètement, et je ne vois aucun moyen pour faire ça. Est-ce que je manque quelque chose?

Ma situation:

J'ai un framework PHP RESTful qui attire des exceptions et émet un statut HTTP 500 si l'exception n'a pas déjà été traitée. Il place ensuite le message d'exception spécifié dans le corps de la réponse et l'envoie au navigateur. Cela fonctionne très bien dans Apache - les en-têtes corrects sont envoyés et le message est affiché à l'utilisateur. Dans IIS, cependant, la réponse pour les codes d'état HTTP 4xx et 5xx est toujours interceptée et injectée avec un autre message préparé ou un fichier HTML, et c'est exactement ce que je ne veux plus faire. S'il vous plaît aider!

Répondre

63

Après un peu plus vaste recherche, je trouve la réponse ici:

http://blogs.msdn.com/webdevelopertips/archive/2009/08/24/tip-93-did-you-know-php-and-custom-error-pages-configuration.aspx

La solution consiste à modifier manuellement votre fichier web.config avec cette coutume "httpErrors" entrée:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <httpErrors existingResponse="PassThrough" /> 
    </system.webServer> 
</configuration> 

Cependant, en raison de la fonction IIS 7.0 "lockdown", vous pouvez obtenir un "Cette section de configuration ne peut pas être utilisée à ce chemin. ocked au niveau des parents. " erreur. Pour résoudre ce problème, exécutez les opérations suivantes dans l'invite de commande:

cd C:\Windows\System32\inetsrv 

appcmd unlock config /section:httpErrors 
2

Dans le Gestionnaire des services Internet -> Site -> Pages d'erreur, cliquez avec le bouton droit sur chaque page d'erreur et choisissez "Supprimer".

Malheureusement, il n'est pas possible de dire à IIS de ne pas interférer du côté du script, c'est donc toujours un problème de déploiement ennuyeux.