Domanda

Come si recupera a livello di codice il nome di un provider di servizi condivisi associato a un'applicazione Web Sharepoint specifica?

Ho una soluzione personalizzata che deve:

  1. Enumera tutte le applicazioni Web in cui è distribuito
  2. Individuare il provider di servizi condivisi a cui è associata ciascuna applicazione Web
  3. Accedi a un catalogo dati aziendali installato sull'SSP per recuperare alcuni dati
  4. Enumerare tutte le raccolte siti in tali applicazioni Web
  5. Eseguire varie attività all'interno delle raccolte siti in base ai dati

Ho capito i punti 1, 3, 4 e 5, ma il 2 è un po' problematico.Voglio evitare di codificare il nome del provider di servizi condivisi ovunque e non richiedere all'amministratore della farm di modificare manualmente un file di configurazione.Tutte le informazioni di cui ho bisogno sono nel database di configurazione di Sharepoint, devo solo sapere come accedervi tramite il modello a oggetti.

È stato utile?

Soluzione

Sfortunatamente non esiste un modo supportato, che io conosca, per farlo.La classe rilevante è SharedResourceProvider nello spazio dei nomi Microsoft.Office.Server.Administration, nella DLL Microsoft.Office.Server.È contrassegnato come interno, quindi pre-riflessione:

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

Post-riflessione:

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

Un'alternativa sarebbe scrivere una query SQL sul database di configurazione, cosa non consigliata.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top