Tout développeur SharePoint est rapidement confronté au développement de web parts, d’event handlers ou encore de workflows. Malheureusement, quand les choses ne vont pas bien, peu savent comment s’y prendre pour débugger et ainsi analyser et corriger le code pouvant poser des soucis. Tous les développeurs sont passées par cette période où les choses sont floues et plus cette période est courte, mieux l’on se porte généralement.
Voici donc un mini guide concernant le débugging d’event handler.
Nous ne reviendrons pas sur l’utilisation des event handlers ni sur le déploiement de ceux-ci. Pour un rappel de ce qu’est un event handler, je vous renvoie sur le site MSDN. La partie qui nous intéresse au niveau des event handlers est qu’ils sont déployés soit dans le répertoire bin de SharePoint, soit dans le Global Assembly Cache (GAC) et chargé dynamiquement par SharePoint lorsque cela est nécessaire.
Outils pour gérer les event handlers
Plusieurs outils sont disponibles sur l’Internet et la majorité de ceux-ci sont gratuits. Personnellement, j’en recommande deux. SP RAD Studio, disponible à la mi-mars et Event handler Explorer en téléchargement libre à l’adresse Event Handler Explorer.
Pourquoi utiliser un tel outil? Tout simplement pour vérifier que l’event handler est bel et bien attaché à la liste ou la librairie de documents souhaitée.
Bien que cela s’avère très simple d’utilisation, voici un petit tour rapide de l’outil:
A l’ouverture du programme, tout est vide. il vous faudra indiquer l’adresse du site collection sur lequel vous souhaitez travailler.

Une fois l’adresse indiquée, vous pouvez naviguer au sein de ce site collection jusqu’à la liste ou la librairie de documents souhaitée.
Une fois sur cette liste, cliquez sur Event Handlers. Si des event handlers sont effectivement attachés à cette liste, ceux-ci sont listées sous ce noeud.

En sélectionnant un event handler, vous obtenez plus d’informations dans la partie droite de l’outil.

Il est également possible d’ajouter ou de supprimer des event handlers par ce biais.
Utilisation des logs de SharePoint
Toute erreur non gérée dans un event handler est logguée dans le fichier de log de SharePoint. L’ensemble des fichiers (il y a, par défaut, un fichier par demi-heure d’exécution de SharePoint) sont situés dans le répertoire c:\Program Files\Common Files\Microsoft Shared\web server extensions\12\LOGS si vous avez installé le SharePoint avec les paramètres par défaut.
Une recherche sur le nom complet de la classe, par exemple, Societe.SharePoint.Application.EventHandlers.NomEventHandler au travers des fichiers permettra rapidement de voir si une erreur est survenue ou non. Une erreur de ce genre prend la forme suivante:
02/25/2009 21:14:39.61 w3wp.exe (0x0C04) 0x04DC Windows SharePoint Services General 8e0c Critical Event manager error: Could not load file or assembly 'Societe.SharePoint.Application.EventHandlers.NomEventHandler, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9f4da00116c38ec5' or one of its dependencies. The system cannot find the file specified.
Notez que, avec Microsoft Office SharePoint Server 2007, vous pouvez écrire directement dans ces logs. Pour cela, il vous faudra référencer la DLL Microsoft.Office.Server.dll dans le répertoire C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\ISAPI\. Ensuite, dans votre code, indiquez l’instruction suivante: Microsoft.Office.Server.Diagnostics.PortalLog.LogString(“votre texte”);
Débugging avec Visual Studio
SharePoint utilise plusieurs processus pour fonctionner. L’un d’entre eux est en charge de gérer le rendu des pages web dans le navigateur. Pour être précis, ce processus est utilisé par toutes les applications ASP.NET, comme c’est le cas pour SharePoint. Ainsi, si on souhaite voir ce qu’il se passe dans notre code durant le chargement et l’exécution de celui-ci, il faudra s’attacher au processus w3wp.exe.
Il se peut que plusieurs instances du processus tournent en parallèle. Pas de souci, vous pouvez attacher votre débuggeur simultanéement à plusieurs processus ou instances de processus. Pour cela, rendez-vous dans Visual Studio. Dans le menu Debug, sélectionner Attach to a process…

Sélectionnez ensuite les instances de w3wp.exe en maintenant la touche CTRL enfoncée. Si vous tentez de vous attacher au process juste après un IISRESET, celui-ci sera manquant. Ainsi, il vous sera nécessaire d’appeler, dans votre browser, un site SharePoint afin que le processus soit démarré.
Vous avez désormais attaché votre debugger à votre event handler. Il suffit donc de placer des points d’arrêts et de réaliser du pas à pas. Profitez bien de toutes les fonctionnalités offertes par Visual Studio (Debugging in Visual Studio).