2008-09-12 8 views
2

Wie rufen Sie den Namen eines Shared Services Providers, der einer bestimmten Sharepoint-Webanwendung zugeordnet ist, programmgesteuert ab?Abrufen des Namens des zugeordneten geteilten Dienstanbieters?

Ich habe eine individuelle Lösung, die benötigt:

  1. Aufzählen alle Web-Anwendungen, die es zu
  2. Auszufinden Provider Shared Services implementiert ist, dass jeder der Web-Anwendungen mit
  3. Zugang a zugeordnet ist, Geschäftsdatenkatalog, der auf dem SSP installiert ist, um einige Daten abzurufen
  4. Aufzählung über alle Websitesammlungen in diesen Webanwendungen
  5. Führen Sie verschiedene Aufgaben innerhalb der Websitesammlungen nach den Daten

Ich habe Punkte 1, 3, 4 und 5 herausgefunden, aber 2 ist etwas mühsam. Ich möchte vermeiden, den SSP-Namen überall fest zu codieren und den Farmadministrator nicht dazu zwingen, eine Konfigurationsdatei manuell zu bearbeiten. Alle Informationen, die ich brauche, sind in der Sharepoint-Konfigurationsdatenbank, ich muss nur wissen, wie ich über das Objektmodell darauf zugreifen kann.

Antwort

2

Leider gibt es keinen unterstützten Weg, von dem ich weiß, dass dies möglich ist. Die relevante Klasse ist SharedResourceProvider im Microsoft.Office.Server.Administration-Namespace in der Microsoft.Office.Server-DLL. Es markierte interne so vorge Reflexion:

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

Post-Reflexion:

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

Eine Alternative wäre eine SQL-Abfrage über die Konfigurationsdatenbank zu schreiben, die nicht empfohlen wird.