Question

J'ai configuré et configuré ELMAH pour consigner toutes mes erreurs dans un projet ASP.NET MVC sur lequel je travaille. Il sera utilisé par un petit groupe d’utilisateurs qui n’ont pas besoin d’en savoir plus, donc chaque fois qu’il ya une sorte d’erreur (404, InvalidOperation, Y2K ... n'importe quoi!), Je veux juste montrez-leur une vue d'erreur générique par défaut avec les instructions pour appeler notre service d'assistance et rester assis à la verticale.

ELMAH est opérationnel et notre équipe de support technique utilisera pour diagnostiquer les erreurs et consigner / élever les tickets si nécessaire. Mon problème est d’obtenir ma page d’erreur globale. J'utilise la solution publiée ici pour vous assurer que ELMAH et [HandleError] jouent bien ensemble.

Web.config est configuré comme suit:

<customErrors mode="On" />

Si j'accède à http: // application / Home / Index qui présente une erreur LINQ (la séquence ne contient pas éléments), ma belle vue d'erreur générique s'affiche dans /Shared/Error.aspx, mais si j'essaie d'accéder à http: / / application / Fake / Broken qui est un 404, puis je reçois l’ASP.NET habituel

Server Error in '/' Application.
The resource cannot be found.
Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable.  Please review the following URL and make sure that it is spelled correctly.

Requested URL: /Fake/Broken

Cependant, les deux erreurs sont parfaitement consignées par ELMAH.

Était-ce utile?

La solution

Si vous souhaitez uniquement afficher une page d'erreur générique, vous pouvez spécifier la page elle-même:

<customErrors mode="On" defaultRedirect="error.htm" />

Cela ferait afficher votre "error.htm" par toutes les exceptions non gérées, les pages non trouvées, etc. Vous pouvez cependant être plus précis sur les codes d'erreur:

<customErrors mode="On">
  <error statusCode="404" redirect="notfound.htm"/>
</customErrors>

Autres conseils

si vous utilisez IIS 7, vous devrez peut-être ajouter ceci à votre

<system.webServer>
Section

du fichier de configuration

<httpErrors errorMode="Custom" existingResponse="PassThrough" />
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top