193 votes

Quelle est la différence entre customErrors et httpErrors?

Quelle est la différence entre les sections customErrors et httpErrors du fichier web.config dans les applications ASP.NET MVC?

Quelles sont les directives pour utiliser chaque section?

165voto

BlackHawkDesign Points 452

Je pense que la réponse de la Pure.Krome n'est pas complète ou mayby, même erronée, à quelques détails.

Le customErrors attribut est utilisé lorsque l' .net code est en train de lancer une exception (404, 403, 500, etc) et la httpErrors attribut est utilisé lorsque l'IIS lui-même est en train de lancer une exception.

Ainsi, par exemple, j'ai une simple application web mvc, j'définir la configuration suivante:

 <system.web>
    <customErrors mode="On" defaultRedirect="Error.html">
        <error statusCode="403" redirect="/Error403" />
        <error statusCode="404" redirect="/Error404" />
        <error statusCode="500" redirect="/Error500" />
    </customErrors>
</system.web>
<system.webServer>
  <httpErrors errorMode="Custom" existingResponse="Auto" defaultResponseMode="ExecuteURL" >
    <remove statusCode="403"/>
    <remove statusCode="404"/>
    <remove statusCode="500"/>
    <error statusCode="403" responseMode="ExecuteURL" path="/Error403" />
    <error statusCode="404" responseMode="ExecuteURL" path="/Error404" />
    <error statusCode="500" responseMode="ExecuteURL" path="/Error500" />
  </httpErrors>

Maintenant, quand vous essayez l'url ci-après, ils vont produire les pages d'erreur suivantes

  • /myfakeextensionslessurl --> httpErrors 404
  • /myfakeaspsx.aspx --> customErrors 404
  • /myfakeimage.jpg --> httpErrors 404
  • /throw500.apx --> customErrors 500
  • /throw500 --> customErrors 500

Lorsque vous utilisez la valeur par défaut des pages d'erreur, vous pouvez voir la diffence encore mieux. Le bleu de la page 404, c'est à partir de iis, le blanc de asp.net

p.s.: normalement, vous utilisez le mode=RemoteOnly & errorMode=DetailedLocalOnly

p.s.2: Lorsque vous spécifiez l'option redirectmode="ResponseRewrite" dans le customErrors balise et l'utilisation extensionless pages d'erreur, comme moi .net sera toujours réécriture d' /Error500.aspx, /Erro404.aspx etc. qui échoue et renvoie de nouveau une page d'erreur par défaut.

88voto

Pure.Krome Points 28473

Avertissement: Ceci est de mon expérience et pas fait.

Les deux sont utilisés pour définir la gestion des erreurs pour un site web, mais les différents logiciels se réfère à différentes config éléments.

customErrors sont un héritage (en arrière compatible) élément, utilisé par le Serveur de Développement Visual Studio (aka. VV ou de Cassini).

httpErrors sont l'élément nouveau qui n'est utilisé que par IIS7.

Cela met en évidence le possible problème lors de l'élaboration de ASP.NET sites web tout en utilisant CIV au lieu de l'IIS local.

Aussi, reportez-vous à ce poste par moi-même sur la façon de gérer les messages d'erreur avec IIS7, si vous souhaitez avoir le plein contrôle de l'erreur de sortie.

Résumé:

  • Développement en VSDS utilisation customErrors
  • L'édition du site d' IIS6 utilisation customErrors
  • L'édition du site d' IIS7 utilisation httpErrors.

et si vous développer avec VSDS mais publier IIS7, alors je suppose que u aurez besoin des deux.

41voto

JohnB Points 6869

<customErrors> contre <httpErrors>


<customErrors>

  • toujours disponible dans IIS7+
  • spécifier des pages d'erreur personnalisées pour les demandes traitées par ASP.NET
  • seulement traite les demandes au sein de l'ASP.NET application
  • fichiers statiques, tels que des fichiers HTML ou un répertoire ("amis") les Url ne sont pas traitées

<httpErrors>

  • introduit dans IIS7
  • spécifier des pages d'erreur personnalisées pour les demandes traitées par les services IIS
  • gère les demandes au sein de l'ASP.NET application ET/OU gère les demandes en dehors de l' - ASP.NET application *
  • tous les fichiers et les Url sont traités *

Remarque: il n'est plus nécessaire d'utiliser customErrors

Citation: 404 Personnalisée et des pages d'erreur dans ASP.NET (excellent article)


ExecuteURL sert du contenu dynamique comme une .page aspx ( path de la valeur doit être un serveur URL relative):

<system.webServer>
  <httpErrors errorMode="Custom" existingResponse="Auto" defaultResponseMode="ExecuteURL" >
    <remove statusCode="404"/>
    <error statusCode="404" responseMode="ExecuteURL" path="/error.aspx" />
  </httpErrors>
</system.webServer>

File sert une erreur personnalisée de fichier, tel qu'un .page html:

<system.webServer>
  <httpErrors errorMode="Custom" existingResponse="Auto" defaultResponseMode="File" >
    <remove statusCode="404"/>
    <error statusCode="404" path="404.html" />
  </httpErrors>
</system.webServer>

Référence: Erreurs HTTP (www.iis.net)

pour plus de détails, consultez les www.iis.net lien ci-dessus

4voto

Rohit Points 335

Les erreurs dans la section de configuration web est de fournir http personnalisé erreur de manipulation approche il y a deux sections, l'une customErrors à l'intérieur de la section système.web et un autre httpErrors à l'intérieur de la section système.serveur web (comme indiqué ci-dessous)

customErrors : Cette section est en cours d'utilisation avant d'IIS 7 introduit, IIS 5 et 6 avant d'utiliser pleinement cette section pour le traitement personnalisé des erreurs http, selon le code d'état http.

httpErrors : IIS 7 et de les utiliser plus tard cette section ainsi que customErrors section pour gérer http personnalisé les erreurs de leurs extensions de fichier si la page demandée extension de registre avec dll ISAPI (.aspx, ashx, .asmx, .svc etc) comme indice.aspx IIS ramasser réglage de customeErrors section autre chose, elle ramasser réglage de httpErrors (IIS 7 mode hébergé doit être intégrée de l'humeur non classique)

ci-dessous sont des exemples qui est de 404 erreur de manipulation de vérification de lien :

httperrors vs customerrors dans webconfig , iis, asp.net

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X