2010-07-06 4 views
5

J'ai une application ASP.NET MVC qui renvoie 404 et parfois 500 codes d'état à divers points appropriés.Récupération d'une erreur IIS7 'one liner' lors de l'utilisation des paramètres d'erreur personnalisés dans web.config

Response.StatusCode = (int)HttpStatusCode.NotFound; 

Quand je mets un de ces codes d'état, je mis également la propriété TrySkipIisCustomErrors appropriée.

Response.TrySkipIisCustomErrors = true 

Ce que je voudrais faire maintenant, est configurer IIS pour passer à travers ces erreurs, que je suis moi-même la mise, et prendre toutes les autres erreurs qui peuvent se produire (comme 404s sur les fichiers statiques, où je ne suis pas l'envoi de requêtes à ASP.NET, ou uncaught 500 erreurs dans ma demande (où vraisemblablement le TrySkipIisCustomErrors propety aura pas été fixé par le cadre)

mon noeud system.webServer/httpErrors ressemble à ceci:.

<httpErrors existingResponse="Auto" errorMode="Custom"> 
</httpErrors> 

Cela renvoie mes propres erreurs ASP.NET où je ensemble TrySkipIisCustomErrors = true, et les pages standard d'erreur IIS pour 500s uncaught, 404s de fichiers statiques etc.

J'ai ensuite essayé de le modifier comme ceci:

<httpErrors existingResponse="Auto" errorMode="Custom" defaultPath="/Skins/Shared/Error/Error.html" defaultResponseMode="ExecuteURL"> 
    <clear /> 
</httpErrors> 

Je crois que cela devrait afficher ma page d'erreur personnalisée dans lieu de l'IIS standard. Toutefois, lorsque j'ajoute ce code, j'obtiens une erreur IIS d'une ligne ("La page ne peut pas être affichée car une erreur interne du serveur s'est produite.") Et renvoie un code d'état 500. Je suppose que cela est dû à une erreur dans ma configuration, mais je ne peux pas pour la vie de moi comprendre ce que je fais mal!

J'ai aussi essayé cette approche, avec les mêmes résultats:

<httpErrors existingResponse="Auto" errorMode="Custom" defaultPath="Skins\Shared\Error\Error.html" defaultResponseMode="File"> 
    <clear /> 
</httpErrors> 

Même en une redirection vers une URL complètement différent produit le même problème.

J'ai utilisé cette page entre autres pour référence: http://blogs.iis.net/ksingla/archive/2008/02/18/what-to-expect-from-iis7-custom-error-module.aspx.

Le fichier d'erreur existe définitivement, et je suis capable de le frapper directement en utilisant un navigateur. En outre, je ne suis pas entièrement sûr de ce que je devrais faire avec le noeud system.Web \ customErrors. S'agit-il uniquement d'un paramètre IIS6 ou est-il lié à ASP.NET? Actuellement je ne l'inclue pas dans mon web.config.

+0

Avez-vous réussi à comprendre cela?J'ai le même problème: s – Robba

+0

Quelles sont les erreurs dans le journal des événements Windows? Avez-vous défini le paramètre "Managed pipeline mode" du pool d'applications en mode "Integrated" ou "Classic"? (Doit être «intégré» pour votre scénario.) –

+0

Le pool d'applications est en mode intégré. Toujours avoir le problème, et ont été incapables de trouver une solution. Il n'y a pas d'erreurs dans le journal des événements. Assez frustrant! – Jamie

Répondre

1

Ajoutez ceci à votre noeud system.webserver. Il dira à IIS de laisser les erreurs être traitées par ASP.Net.

<httpErrors existingResponse="PassThrough" /> 
+0

merci de m'avoir aidé à arrêter de me tirer les cheveux, stupide je ne me laisse pas retourner une réponse 500 comme je veux –

1

Je sais c'est une vieille question, mais il est identique au problème que j'ai eu depuis quelques jours que je viens récemment compris. Ce qui a fonctionné pour moi:

Essayez de supprimer l'élément

<httpErrors> 

de web.config entièrement.

Questions connexes