Debugging di WebPart

Mi capita spesso di creare delle Web Application in ASP.Net (ovviamente, what else?) e di debuggarle da remoto.

Il debugging remoto devo dire che è davvero molto utile perchè spesso il problema non è completamente riproducibile in un ambiente di sviluppo, oppure perchè non è così facile ricreare lo stesso identico context.

Detto questo, una delle prime cose che ho trovato difficoltoso da fare quando ho cominciato a sviluppare WebPart (il discorso è valido per SPS2003 o MOSS2007 e loro wss, di seguito lo chiamerò semplicemente SharePoint), era proprio il debugging.

Non chiedetemi perchè lo posto solo ora, probabilmente è perchè la mia memoria è quella che è e quindi, ora che mi è venuto in mente lo scrivo.

Una WebPart è semplicemente un "componente" di una pagina di una web application e, in Sharepoint, si installa registrando l'assembly nella GAC del server web (in realtà non è l'unico modo possibile).

Quindi il tutto si riduce a: come debuggare un assembly registrato nella GAC da remoto?

La risposta è molto semplice: copiare il relativo file .pdb nella GAC.

Come?

Beh, questa è una cosa fattibile solo a riga di comando, dato che dall'explorer la GAC è renderizzata in modo poco usabile.

Quindi basta trovare in quale directory sia stato registrato il vostro assembly (un path tipo: "C:\WINDOWS\assembly\GAC\NomeAssembly\1.0.0.0__02f4c2d9cf100d9a>") e copiare anche il file .pdb per il debug.

TIP: nel caso di una WebPart non è possibile sovrascrivere i file nella GAC se sono in uso (ovvero se il web che lo utilizza è in uso), quindi occorre fermare IIS, copiare i file, e poi farlo ripartire.
Nell'ordine quindi:

c:\>iisreset /stop
c:\>copy nomeassembly*.* C:\WINDOWS\assembly\GAC\NomeAssembly\1.0.0.0__02f4c2d9cf100d9a
c:\>iisreset /start

A questo punto da Visual Studio (VS) si procede come sempre: menù Debug--> Attach to Process:

Come Qualifier dobbiamo selezionare il Server web sulla quale è installato SharePoint (Attenzione: deve essere configurato per il Remote Debugging!).

Da qui selezioniamo il processo di IIS (w3wp.exe) (come nelle pubblicità, lo screen shot sopra è a puro scopo dimostrativo, non c'è il processo di IIS perchè non ho disponibile un server in questo momento...) e poi clicchiamo Attach.

A quel punto, se qualcuno utilizza la WebPart sul sito e avete messo dei break-point, VS entrerà in modalità debug.

Buon debug!

Print | posted @ Friday, February 8, 2008 2:46 PM

Comments on this entry:

Gravatar # re: Debugging di WebPart
by Massimo Prota at 2/10/2008 8:43 PM

Esiste anche una feature che facilita questo mestiere e che può essere comoda:

Gravatar # re: Debugging di WebPart
by Massimo Prota at 2/10/2008 8:44 PM

scusa, non è comparso il link:
http://blogs.msdn.com/sharepoint/archive/2007/04/10/debugger-feature-for-sharepoint.aspx
Comments have been closed on this topic.