Vous récupérez le nom du fournisseur de services partagés associé ?
-
09-06-2019 - |
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 :
- Énumérer toutes les applications Web sur lesquelles il est déployé
- Déterminez le fournisseur de services partagés auquel chacune des applications Web est associée.
- Accéder à un Business Data Catalog installé sur le SSP pour récupérer certaines données
- Énumérer toutes les collections de sites dans ces applications Web
- 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.
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é.