Pregunta

¿Cómo se recupera mediante programación el nombre de un proveedor de servicios compartidos asociado con una aplicación web de Sharepoint específica?

Tengo una solución personalizada que necesita:

  1. Enumerar todas las aplicaciones web en las que está implementado
  2. Averigüe el proveedor de servicios compartidos al que está asociada cada una de las aplicaciones web.
  3. Acceda a un catálogo de datos comerciales instalado en el SSP para recuperar algunos datos
  4. Enumerar todas las colecciones de sitios en esas aplicaciones web.
  5. Realizar diversas tareas dentro de las colecciones de sitios según los datos.

Resolví los puntos 1, 3, 4 y 5, pero el 2 es algo problemático.Quiero evitar codificar el nombre del SSP en cualquier lugar y no requerir que el administrador de la granja 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.

¿Fue útil?

Solución

Desafortunadamente, no conozco ninguna forma compatible 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á marcado internamente, así que antes de la 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, lo cual no se recomienda.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top