SharePoint (2007/2010) : Echec de l’élévation de privilèges dans un EventReceiver.

Au rez-de-chaussée, c’est ‘.

Dans un EventHandler de ce type (ou d’un autre !) :

public override void ItemAdded(SPItemEventProperties properties){

   SPSecurity.RunWithElevatedPrivileges(delegate()   {

  // Actions nécessitant des privilèges.

});

Dans le code exécuté avec privilèges, il NE FAUT PAS utiliser directement les objets présentés par l’objet properties (.List, .Web, etc.). Il faut retrouver ces objets avec leur ID (.ListID, .SiteID, etc.). Sinon il y a de grandes chance d’avoir des valeurs ‘ ou des exceptions d’accès.

SPSite monSite = new SPSite("url.com");

SPList maListe = monSite.Lists[properties.ListID];

SPItem monItem = maListe.GetItemById(properties.ListItemId);

etc…

 

SharePoint : Déplacer une liste / bibliothèque d’un site WSS/MOSS vers SharePoint 2010

  • Enregistrer la liste source en tant que modèle (fichier STP), avec les données.
    • Si la taille des données est trop importante, autoriser exeptionnellement une taille de modèles supérieure : "C:Program FilesFichiers communsMicrosoft Sharedweb server extensions12BINSTSADM.exe" -o setproperty -pn max-template-document-size -pv 52428800
  • Récupérer ce fichier STP.
  • Renommer le fichier en .CAB.
  • Extraire les fichiers.
  • Editer le fichier manifest.xml, et modifier la valeur de <ProductVersion> à 4.
  • ré-empaqueter le(s) fichier(s) dans une archive .CAB :
    • Utiliser makecab.exe si il n’y a qu’un seul fichier (manifest.xml).
    • Utiliser iexpress.exe si il y a plusieurs fichiers.
  • Renommer le fichier en .STP
  • Utiliser ce fichier comme modèle de liste dans le site de destination.

Source

SharePoint : La suppression d’une colonne provoque une « erreur inconnue »

L’un connu, l’autre pas.

Symptôme : Le fait de supprimer la colonne d’une liste provoque une erreur inconnue. La trace est la suivante :

w3wp.exe (0x0AA8) 0x044C Windows SharePoint Services General 8dzz High Exception Type: System.Web.HttpException Exception Message: Unable to validate data.

Diagnotic : Certaines pages systèmes (dans /_layouts/*.aspx) ne supportent pas la présence d’une webpart de recherche dans la page maître. Article détaillé.

Solution : Si la page maître d’application “application.master” contient une webpart de recherche, il faut la supprimer (édition dans un bloc note, puis publication dans la galerie des pages maitres du site).

SharePoint : « stsadm -o backup » renvoie des erreurs KeyNotFoundException

Où sont passées les clés ?

Symptôme : Lors d’un backup catastrophique de la ferme, l’erreur “KeyNotFoundException” peut survenir, notammanent pour les objets liés à la recherche SSP (“Index de recherche partagé” ou la base de données associée).

Explication : Plusieurs causes sont envisageables. Notamment un index déféctueux ou obsolète. Le mieux est de vérifier si les services de recherche sont bien configurés et démarrés (dans l’admin centrale, mais aussi dans les services partagés).

Solution 1 : Purger les index.

  • Accéder au serveur d’administration incriminé.
  • Ouvrir l’Administration centrale de SharePoint 3.0
  • Accéder au site des services partagés
  • Cliquer sur « Administration de la recherche »
  • A gauche, cliquer sur « Réinitialiser tout le contenu analysé ».
  • Cliquer sur le bouton « Réinitialiser maintenant », confirmer par “OK”.
  • La sauvegarde ne devrait plus retourner d’erreurs.

Solution 2 : Dans le cas où le script ne fonctionne toujours pas, on redémarre les services de recherche en vérifiant leur bonne configuration.

  • Aller dans l’administration centrale
  • Cliquer sur « Opérations », puis « Services sur le serveur »
  • Arrêter le service « Service de recherche Office SharePoint Server », et confirmer.
  • Démarrer ce même service
  • Cliquer sur « Opérations », puis « Services sur le serveur »
  • Cliquer sur « Recherche d’aide Windows SharePoint Services » (ou « recherche d’aide… » selon la version).
  • Confirmer le compte et mot de passe du « compte d’accès au contenu », cliquer sur OK.
  • Cliquer sur « Administration de services partagés »
  • Faire « Modifier » sur le service partagé, et lui associer le serveur d’indexation.
  • Le service de recherche SSP devrait fonctionner, et le script de sauvegarde ne devrait plus retourner d’erreurs.

La solution 2 a fonctionné dans un cas précis. Seul problème : on perd ses index, et dans le cas de fermes SharePoint conséquentes, d’autres solutions sont à envisager.

SharePoint : déploiement global d’une solution

Pour qu’une solution soit déployable globalement, il faut qu’elle réunisse les conditions suivantes :

– Elle ne doit pas contenir de web controls.

– Elle ne doit pas contenir de web parts.

Pourquoi ? Parce que ce type d’éléments provoque une modification du fichier web.config, d’où la nécéssité de cibler explicitement les web app concernées.