Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Atteint de JavaScriptite Aiguë [Cyril Durand]

Expert ASP.net Ajax et WCF, Cyril Durand parle dans son blog de point techniques sur ASP.net, ASP.net Ajax, JavaScript, WCF et .net en général. Cyril est également consultant indépendant, n'hésitez pas à le contacter pour de l'assistance sur vos projets

Actualités

  • Blog de Cyril DURAND, passionné de JavaScript, Ajax, ASP.net et tout ce qui touche au developpement Web Client-Side.

    N'hésitez pas à me contacter pour vos projets .net : architecture, accompagnement, formation, ...

    View Cyril Durand's profile on LinkedIn
    hit counters


    Expertise Commerce server et BizTalk

UpdatePanel : comment logger les erreurs lors de son rafraichissement en utilisant le Health Monitoring

ASP.net 2.0 est venu avec un mécanisme très puissant pour logger les erreurs : le Health Monitoring. Ce mécanisme très méconnu est présenté par Daniel à travers de ce WebCast.

Le Health Monitoring fonctionne avec un système de provider que l'on configure dans le web.config, ASP.net fournit par défaut plusieurs providers : EventLogWebEventProvider, SimpleMailWebEventProvider, SqlWebEventProvider, ... plus intéressant encore le EventLogWebEventProvider est configuré par défaut dans le web.config root. Cela veut dire que tous les événements déclenchés par ASP.net seront automatiquement loggés dans les logs windows. Parmi les événements intéressants il y a surtout les erreurs ...
Grâce à cette configuration par défaut, toutes les erreurs .net sont loggés dans le journal d'événements windows.

Si l'on exécute ce code :

<asp:Button ID="btn1" runat="server" Text="click" OnClick="btn1_Click" />

protected void btn1_Click(object sender, EventArgs e) { throw new Exception("BOOOOM!"); }

Une entrée dans le journal windows sera créé et je n'ai aucune configuration particulière à faire:

Untitled.png

Mais qu'est-ce qui se passe si l'on rajoute maintenant un UpdatePanel autour de notre bouton ?

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"> <ContentTemplate> <asp:Button ID="btn1" runat="server" Text="click" OnClick="btn1_Click" /> </ContentTemplate> </asp:UpdatePanel>

Logiquement l'erreur devrait remonter dans les logs windows. Si je vous en parle vous aurez compris que ce n'est pas le cas. Pourquoi les exceptions déclenchées lors d'un AsyncPostBack ne remontent pas dans les logs Windows ? Car dans ce cas, c'est le ScriptManager qui prend la main sur la phase de rendering, et celui-ci attrape les exceptions qui ont pu se produire dans la page pour continuer à écrire une réponse pré-formaté pour la partie cliente des UpdatePanel (je simplifie).

Mais comment faire pour logger les erreurs lorsque l'on utilise un UpdatePanel ? Il faut s'abonner à l'événement OnAsyncPostBackError du ScriptManager et relancer l'event.

Pour cela le système du Health Monitoring nous demande de créer une nouvelle classe qui hérite de WebErrorEvent

public class UpdatePanelError : WebErrorEvent { public UpdatePanelError(String message, Object eventSource, int eventCode, Exception exception) : base(message, eventSource, eventCode, exception) { } }

On peut ensuite déclencher et remonter cet event.

protected void ScriptManager1_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e) { UpdatePanelError error = new UpdatePanelError(e.Exception.Message, this, 200000, e.Exception); error.Raise(); }
 
Posted: mercredi 18 avril 2007 01:58 par cyril
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires

Aleks a dit :

Haaaannnnn ... tu t'amuses à faire des throw exception sur le projet CS ... je vais le dire à Nix :D

Eu sinon très belle info ... je ne connaissais pas.

# avril 18, 2007 10:22

cyril a dit :

c'est du C# ...

J'ai beau pesté contre Nix pour le VB mais je n'ai meme pas tenté de le convertir à un vrai langage productif ...

# avril 18, 2007 10:33
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Simuler facilement l’envoi de mail par Blog de Jérémy Jeanson le il y a 10 heures et 46 minutes

- ProcDump 6.0 : support du filtrage sur messages d'exceptions .NET, des filtres multiples et du ciblage par nom de service par CoqBlog le 05-20-2013, 14:50

- Votez pour le TOP 10 des influenceurs SharePoint francophones ! par Le blog de Patrick [MVP SharePoint] le 05-20-2013, 12:59

- [Conf’SharePoint] Dernier rappel ! :-) par Le blog de Patrick [MVP SharePoint] le 05-20-2013, 09:09

- [ #SharePoint 2013 ] les modèles de sites standards… par Le blog de Patrick [MVP SharePoint] le 05-20-2013, 09:03

- 10 erreurs de compréhension concernant SharePoint… par Le blog de Patrick [MVP SharePoint] le 05-20-2013, 08:27

- Conf’SharePoint : 10 bonnes raisons pour ne pas la rater par Le petit blog de Pierre / Pierre's little blog le 05-14-2013, 02:24

- [Event] Soirée de lancement Agile .NET France à Lyon par Blog Agile/ALM de Vincent THAVONEKHAM le 05-13-2013, 01:29

- .NET / Debug : inspection de la mémoire d'applications .NET (dump ou processus live) : première livraison d'une librairie .NET par Microsoft par CoqBlog le 05-11-2013, 22:21

- SharePoint : Incompatibilité avec Internet Explorer 10 (IE10) par Blog Technique de Romelard Fabrice le 05-08-2013, 16:29