SP2010 - Missing methods in PublishingWeb class
Lavorando sul porting di applicazioni da SharePoint 2007 e SharePoint 2010 mi sono imbattutto in un problema sul object model che non mi sarei apettato. Stavo creando una site collection partendo da una site definition custom e improssisamente un errore rovina quella che doveva essere una giornata ad alta produttività (tra l'altro una delle giornate d'inverno in cui si vede il sole a Milano dal mattino fino alla sera ... argggg):
Provisioning did not succeed. Details: The site template was not provisioned successfully. Delete this site collection in Central Administration, and then create a new site collection. OriginalException: Method not found: 'Void Microsoft.SharePoint.Publishing.PublishingWeb.ExcludeFromNavigation(Boolean, System.Guid)'.
Method not found?!? WTF
Nella classe PublishingWeb sono stati cancellati i metodi che permettono di configuare la navigation:
- ExcludeFromNavigation
- IncludeInNavigation
dopo qualche ho scoperto che "ovviamente" sono stati rimpiazati da altri:
- IncludeInCurrentNavigation(boolean)
- IncludeInGlobalNavigation(boolean)
che al loro interno, sulla base del valore del parametro, vanno a chiamare
- PublishingWeb.Navigation.IncludeInNavigation(Boolean, System.Guid);
- PublishingWeb.Navigation.ExcludeFromNavigation(Boolean, System.Guid);
I più attenti lettori avranno già intuito che i metodi in realtà sono stati spostati in un'altra classe che si chiama PortalNavigation.
Aprendo questa classe con Reflector si può finalmente leggere il codice in modo agevole dato che non è stata offuscata, come invece lo era su SharePoint 2007.