2010-08-10 4 views
0

Ce que je voudrais faire est attraper une exception qui n'a pas été traitée dans l'application Web, puis envoyer l'utilisateur à un écran disant quelque chose commeCatch all gestionnaire d'exceptions dans global.cs

« regrettaient ce qui a écrasé "

Et en même temps envoyer l'exception à nos systèmes de billetterie.

Je suppose que j'ai besoin de le mettre dans le global.cs quelque part je ne sais pas où?

Répondre

3

Vous devez l'événement Application_Error dans Global.cs

protected void Application_Error(object sender, EventArgs e) 
{ 

} 
3

Vous pouvez configurer une page d'erreur personnalisée dans le web.config comme suit:

<configuration> 
    <system.web> 
    <customErrors defaultRedirect="GenericError.htm" 
        mode="RemoteOnly"> 
    </customErrors> 
    </system.web> 
</configuration> 

Il est également sage de se connecter ces exceptions . Il existe plusieurs cadres de journalisation populair qui peuvent le faire pour vous. Deux d'entre eux, ELMAH et CuttingEdge.Logging, ont des fonctions d'intégration standard pour ASP.NET, ce qui permet d'écrire aucune ligne de code. En utilisant CuttingEdge.Logging par exemple, vous pouvez configurer votre site pour se connecter automatiquement des erreurs dans le journal des événements Windows comme suit:

<?xml version="1.0"?> 
<configuration> 
    <configSections> 
    <section name="logging" 
     type="CuttingEdge.Logging.LoggingSection, CuttingEdge.Logging" /> 
    </configSections> 
    <logging defaultProvider="WindowsEventLogger"> 
    <providers> 
     <add name="WindowsEventLogger" 
type="CuttingEdge.Logging.WindowsEventLogLoggingProvider, CuttingEdge.Logging" 
     source="MyWebApplication" 
     logName="MyWebApplication" /> 
    </providers> 
    </logging> 
    <system.web> 
    <httpModules> 
     <add name="ExceptionLogger" 
type="CuttingEdge.Logging.Web.AspNetExceptionLoggingModule, CuttingEdge.Logging"/> 
    </httpModules> 
    </system.web> 
</configuration> 


Mise à jour: Désolé, la lecture des questions semble difficile pour moi. Vous voulez envoyer l'exception à vos systèmes de billetterie. Tous les systèmes de journalisation populaires vous permettent d'étendre la fonctionnalité par défaut, souvent assez facilement, mais bien sûr, vous devrez coder pour cela. Vous pouvez bien sûr aussi remplacer le Application_Error comme le suggère Philip. Toutefois, ces cadres de journalisation peuvent avoir beaucoup de fonctionnalités que vous pourriez envisager.

Bonne chance.

+0

Bonjour Steven, j'utilise déjà log4net, donc c'est peut-être une idée de voir si je peux l'étendre. – TheAlbear

+0

Absolument. log4net a un excellent mécanisme d'extension et si vous êtes déjà familiarisé avec log4net, je ne pense pas qu'il y ait une raison de passer à un autre framework. Toutefois, log4net ne contient pas de 'HttpModule' qui peut être configuré pour rediriger les exceptions vers l'infrastructure de journalisation. Cependant, vous pouvez le faire vous-même assez facilement en utilisant l'événement global.asax 'Application_Error'. – Steven

Questions connexes