ELMAH base de données SQL Erreur gestionnaire pas disponible- ce qui se passe à l'exploitation forestière?
Question
Je teste ELMAH et ont délibérément désactivé la connexion de base de données pour le journal ELMAH dans mon application pour voir ce qui se passera dans la production si la DB n'est pas disponible.
Il semble que ELMAH ne peut pas piéger son propre errors- le fichier AXD n'est pas disponible lorsque le journal de databse SQL échoue.
Quel est le comportement prévu de ELMAH si la base de données ne sont pas disponibles?
Comment puis-je diagnostiquer mes erreurs si cela se produit?
La solution
Pas vraiment sûr ELMAH mais le comportement attendu de ces cadres d'exploitation est de ne pas jeter des exceptions en cas de problème avec eux. C'est à dire. si la base de données ELMAH est en baisse je suppose que ce sera tout simplement pas enregistrer les erreurs de base de données.
Comme suggéré ci-dessus, vous pouvez / devrait utiliser autre puits -. E-mail ou fichier plat
Autres conseils
Il semble que ELMAH ne peut pas son propre piège erreurs
ELMAH ne piège ses propres erreurs dans une certaine mesure. Si le ErrorLogModule
rencontre une exception en essayant d'enregistrer l'erreur, l'exception résultant de l'exploitation est envoyé à l'installation standard trace .NET Framework. Voir ligne 123 de 1,0 . sources Voir aussi dans la documentation ASP.NET rendez-vous en suivant pour obtenir le tracé standard .NET Framework travail avec traçage ASP.NET:
Walkthrough: Intégration de ASP.NET avec traçage System.Diagnostics Tracing
le fichier AXD n'est pas disponible lorsque le journal SQL databse échoue.
C'est exact. la connectivité de base de données SQL Server doit être fonctionnel pour afficher les erreurs stockées dans une base de données SQL Server lors de l'utilisation SqlErrorLog
.
Quel est le comportement prévu de ELMAH si la base de données ne sont pas disponibles?
Si, par exemple, la base de données SQL Server est en panne, un SqlException
se produira au cours de l'exploitation forestière. ELMAH enverra alors le contenu de l'objet SqlException
à l'installation standard trace .NET Framework.
Comment puis-je diagnostiquer mes erreurs si ce se produit?
La meilleure option est ici pour également la consignation et e-mailing d'erreurs. Si la base de données est en baisse, les chances sont bonnes que la passerelle de messagerie est et vous encore être averti des erreurs. Les erreurs seront, en effet, obtenir connecté dans une boîte aux lettres (es). Cela a aussi l'avantage que si la passerelle de messagerie est toujours vers le bas alors les chances sont que la base de données sera et erreurs arriverai connecté. Si les deux sont en baisse, cependant, alors vous aurez besoin d'examiner sérieusement votre infrastructure de production et éventuellement prendre des mesures pour surveiller la santé de votre système grâce à des mesures supplémentaires.
Vous pouvez toujours utiliser l'option de fichier xml pour consigner vos erreurs.
Je pense que vous mélangez contexte un peu.
Le comportement de ELMAH si la base de données ne sont pas disponibles est de ne pas enregistrer les erreurs à la base de données. Si une exception est levée sur le serveur ou si vous soulevez une exception au moyen d'un ErrorSignal
, ELMAH va laisser passer par cette exception soit un écran jaune ou une page d'erreurs personnalisées (votre réglage.)
il est correct Depuis la page Errors.axd est accessible uniquement à ceux qui devraient être le voir (idéalement,) pour présenter cette erreur à l'utilisateur.
La ligne de fond est que si la base de données des erreurs est en panne, vous ne pouvez pas diagnostiquer les erreurs. Pour nous, si tel était le cas, nous aurions plus gros problèmes depuis la base de données d'erreur se trouve à la base de données de production.
Je voudrais également plaider en faveur contre l'utilisation de l'enregistrement XML pour votre source primaire d'exploitation. SQL Server va vous donner les meilleures performances sans avoir à gérer les fichiers. Avec l'enregistrement XML qui est pas le cas.