2009-08-19 7 views
2

Souhaitez-vous des suggestions sur la gestion rapide et simple des erreurs pour l'application web asp.net mvc?Approche minimaliste pour la gestion des erreurs

+0

le moyen le plus rapide et la plus simple est : non! ... mais bien sûr, cette solution n'est pas recommandée ... –

Répondre

4

ELMAH en conjonction avec un attribut qui étend HandleError et enregistre les erreurs via ELMAH. Voir ce question/answer pour quelques idées sur la façon d'obtenir l'attribut HandleError pour travailler avec ELMAH. Dan Swatik également blogged à ce sujet avec une implémentation basée sur la réponse acceptée dans cette question.

1

Vérifiez l'échantillon Nerd Dinner. Il utilise une approche très nette et simple.

1

Je viens récemment employé une solution de reporting d'erreur très rapide n-sale de mon propre qui pourrait vous donner quelques idées ...

Créer une classe de contrôleur de base, permet de l'appeler MyBaseController. Tous vos contrôleurs en héritent si vous le souhaitez, bien que cela ne soit pas nécessaire si vous n'avez qu'un seul contrôleur.

Ensuite, vous pouvez substituer sa méthode partielle OnException et insérer n'importe quel type de rapport d'erreur que vous souhaitez, comme vous envoyer un e-mail avec ToString() de l'exception. Par exemple:

public MyOwnBaseController : Controller 
    protected override void OnException(ExceptionContext context) 
    { 
     SendAdminErrorAlert("Egads! An Error!", context.Exception.ToString()); 
     // I have a view named "500.aspx" that I will now show... 
     context.ExceptionHandled = true; 
     this.View("500").ExecuteResult(this.ControllerContext); 
    } 
} 

Je trouve également que cet article utile: http://blog.dantup.me.uk/2009/04/aspnet-mvc-handleerror-attribute-custom.html dans l'apprentissage de tout cela ...

Bonne chance!
-f!

+0

PS, vous pouvez obtenir pratiquement les mêmes résultats 'quick-n-dirty' à partir d'un attribut que vous appliquez sur vos contrôleurs (vous pouvez sous-classer le HandleErrorAttribute intrinsèque ie, [ HandleError]) avec pratiquement la même quantité de code ... – Funka

2

Vous pouvez toujours utiliser l'ancienne méthode Application_Error dans le Global.asax

protected void Application_Error(object sender, EventArgs e) 
{ 
    // some good info in Server.GetLastError().GetBaseException() and Context.Request 
    // that you can use in whatever you choose for 
    // your quick and easy logging/reporting 
} 

De toute évidence, vous voulez activer customErrors aussi ...

<customErrors mode="RemoteOnly" defaultRedirect="~/error"> 
    <error statusCode="403" redirect="~/error/forbidden" /> 
    <error statusCode="404" redirect="~/error/notfound" /> 
    <error statusCode="500" redirect="~/error" /> 
</customErrors> 
Questions connexes