Question

Comment récupérer par programme le nom d’un fournisseur de services partagés associé à une application Web Sharepoint spécifique ?

J'ai une solution personnalisée qui doit :

  1. Énumérer toutes les applications Web sur lesquelles il est déployé
  2. Déterminez le fournisseur de services partagés auquel chacune des applications Web est associée.
  3. Accéder à un Business Data Catalog installé sur le SSP pour récupérer certaines données
  4. Énumérer toutes les collections de sites dans ces applications Web
  5. Effectuer diverses tâches au sein des collections de sites en fonction des données

J'ai compris les points 1, 3, 4 et 5, mais le 2 est quelque peu gênant.Je souhaite éviter de coder en dur le nom SSP n'importe où et ne pas obliger l'administrateur de la batterie à modifier manuellement un fichier de configuration.Toutes les informations dont j'ai besoin se trouvent dans la base de données de configuration Sharepoint, j'ai juste besoin de savoir comment y accéder via le modèle objet.

Était-ce utile?

La solution

Malheureusement, à ma connaissance, il n'existe aucun moyen pris en charge pour que cela puisse être fait.La classe appropriée est SharedResourceProvider dans l'espace de noms Microsoft.Office.Server.Administration, dans la DLL Microsoft.Office.Server.C'est marqué interne donc pré-réflexion :

SharedResourceProvider sharedResourceProvider = ServerContext.GetContext(SPContext.Current.Site).SharedResourceProvider;
string sspName = sharedResourceProvider.Name;

Post-réflexion :

ServerContext sc = ServerContext.GetContext(SPContext.Current.Site);
PropertyInfo srpProp = sc.GetType().GetProperty(
    "SharedResourceProvider", BindingFlags.NonPublic | BindingFlags.Instance);
object srp = srpProp.GetValue(sc, null);
PropertyInfo srpNameProp = srp.GetType().GetProperty(
    "Name", BindingFlags.Public | BindingFlags.Instance);
string sspName = (string)srpNameProp.GetValue(srp, null);

Une alternative serait d'écrire une requête SQL sur la base de données de configuration, ce qui n'est pas recommandé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top