2010-09-29 9 views
2

Je l'entrée suivante dans le web.config:CustomErrors Attraper dans ASP.NET

<customErrors mode="RemoteOnly" defaultRedirect="Error.aspx" /> 

est-il un moyen de Error.aspx.cs pour obtenir les détails de l'erreur afin que je puisse enregistrer dans un fichier?

Répondre

3

Vous pouvez utiliser Server.GetLastError() pour obtenir le dernier objet d'exception qui a été soulevé:

Exception exception = Server.GetLastError(); 

Sinon, vous voudrez peut-être regarder la manipulation de ce dans le fichier global.asax dans la méthode Application_Error plutôt que votre page d'erreur personnalisée.
Il existe différentes méthodes décrites dans cette section Microsoft support article pour la gestion et le signalement des erreurs personnalisées

1

Vous pouvez configurer un cadre de journalisation pour l'enregistrer dans un fichier. Tout framework fera l'affaire, mais permettez-moi de brancher le mien ici :-)

Avec CuttingEdge.Logging, vous pouvez configurer un HttpModule (fourni avec la bibliothèque) qui transmettra automatiquement les informations d'exception au système de journalisation. Lorsque vous configurez un XmlFileLoggingProvider, vous serez en mesure d'écrire dans un fichier. Aucun changement n'est nécessaire dans votre application. Voici un exemple de configuration:

<?xml version="1.0"?> 
<configuration> 
    <configSections> 
    <section name="logging" 
     type="CuttingEdge.Logging.LoggingSection, CuttingEdge.Logging" /> 
    </configSections> 
    <logging defaultProvider="XmlLogger"> 
    <providers> 
     <add name="XmlLogger" 
    type="CuttingEdge.Logging.XmlFileLoggingProvider, CuttingEdge.Logging" 
     path="log.xml" 
     /> 
    </providers> 
    </logging> 
    <system.web> 
    <httpModules> 
     <add name="ExceptionLogger" 
type="CuttingEdge.Logging.Web.AspNetExceptionLoggingModule, CuttingEdge.Logging"/> 
    </httpModules> 
    </system.web> 
</configuration> 

Vous pouvez simplement ajouter le CuttingEdge.Logging.dll à votre dossier bin de votre application et inclure cette configuration et vous êtes bon pour aller. C'est une bonne chose à propos de CuttingEdge.Logging AspNetExceptionLoggingModule est que non seulement il consignera les exceptions déclenchées lors d'une requête, mais qu'il consignera également les échecs provenant des threads d'arrière-plan et provoquera un recyclage AppDomain. Ce dernier est une caractéristique non des autres cadres de journalisation de soutien hors de la boîte.

1

Je suggère d'utiliser ELMAH pour la journalisation des erreurs si c'est ce que vous cherchez. Il fournit tous les détails de toute erreur non gérée qui s'est produite dans votre application et l'enregistre dans la base de données/fichier texte. Il dispose également d'un outil de reporting puissant qui vous montre tout sur les erreurs consignées, y compris l'écran jaune de la mort. Il vous offre également la possibilité de vous envoyer les erreurs lorsqu'elles se produisent. Enfin, il est aussi simple que d'ajouter quelques configurations dans votre web.config pour l'exécuter. Toutefois, si vous souhaitez également afficher un écran convivial, vous devez le configurer dans application_error dans global.aspx.

Questions connexes