tutorial powerapps español ejemplos crear con aplicaciones sharepoint moss sharedservicesprovider

sharepoint - powerapps - ¿Recuperando el nombre del proveedor del servicio compartido asociado?



powerapps ejemplos (1)

¿Cómo recupera programáticamente el nombre de un proveedor de servicios compartidos asociado a una aplicación web Sharepoint específica?

Tengo una solución personalizada que necesita:

  1. Enumerar todas las aplicaciones web en las que se implementó
  2. Averiguar el proveedor de servicios compartidos al que está asociada cada una de las aplicaciones web
  3. Acceda a un Catálogo de datos profesionales instalado en el SSP para recuperar algunos datos
  4. Enumerar a través de todas las colecciones de sitios en esas aplicaciones web
  5. Realice varias tareas dentro de las colecciones de sitios de acuerdo con los datos

Obtuve los puntos 1, 3, 4 y 5 resueltos, pero 2 es algo problemático. Quiero evitar el código rígido del nombre del SSP en cualquier lugar y no requerir que el administrador de la granja de servidores edite manualmente un archivo de configuración. Toda la información que necesito está en la base de datos de configuración de Sharepoint, solo necesito saber cómo acceder a ella a través del modelo de objetos.


Lamentablemente, no hay forma admitida de que esto se pueda hacer. La clase relevante es SharedResourceProvider en el espacio de nombres Microsoft.Office.Server.Administration, en la DLL Microsoft.Office.Server. Está marcada internamente por lo que pre-reflexión:

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

Post-reflexión:

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);

Una alternativa sería escribir una consulta SQL sobre la base de datos de configuración que no es recomendable.