Il blog di Giuseppe Marchi - SharePoint MVP
NAVIGATION - SEARCH

Come recuperare le Missing Web Part indicate nel report di upgrade a SharePoint 2010

Quando ci si prepara per un upgrade a SharePoint 2010 utilizzando la tecnica dell'attach del database di contentuo, è buona regola lanciare il comando *Test-SPContentDatabase* tramite PowerShell.
Questo comando controlla il database di contenuto che abbiamo intenzione di migrare e produce un report contenente tutti gli warning relativi al processo di migrazione, così che possiamo cercare il modo migliore di correggerli. Tra i vari messaggi, ci sono anche tutti quelli riguardanti le web part mancanti sulla farm SharePoint 2010 e che invece sono presenti all'interno del database che abbiamo intenzione di migrare. Il problema è che quel report non ci indica ne l'assembly ne il nome del tipo della nostra web part mancanta, ma ci presenta un GUID, il che rende impossibile capire di quale web part si sta parlando.
Esiste però il modo per recuperare a partire da quell'identificativo, qual'è l'assembly e quale la web part mancante.
Per questo ho creato un piccolo progetto su codeplex che dato l'assembly e il tipo di una web part (che possiamo tranquillamente recupare dalla pagina http://SERVERSHAREPOINT/_layouts/newdwp.aspx) genera l'identificativo della web part così come lo troviamo nel report di pre-migrazione.
La generazione di questo identificativo è fatta utilizzando lo stesso algoritmo che utilizza SharePoint per generare il GUID relativo alla web part e salvarlo nel database. Questo algorimo utilizzo un hashing MD5 per computare la stringa formata dalla concatenazione del nome dell'assembly, di un pipe e del nome del tipo relativi alla web part.

string data = "Microsoft.Office.Server.Search, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" + 

"|" +
"Microsoft.Office.Server.Search.WebControls.AdvancedSearchBox";
byte[] dataBytes = Encoding.Unicode.GetBytes(data);
MD5 hashAlgo = new MD5CryptoServiceProvider();
byte[] hash = hashAlgo.ComputeHash(dataBytes);
Guid hashGuid = new Guid(hash);
string WebPartID = hashGuid.ToString();

Easy WebPart Type ID generator

Potete scaricare il tool da codeplex seguendo questo indirizzo:
http://easywebparttypeidgen.codeplex.com/
blog comments powered by Disqus