2008-09-12 86 views
2

如何以編程方式檢索與特定Sharepoint Web應用程序關聯的共享服務提供程序的名稱?檢索關聯的共享服務提供商的名稱?

我有一個需要定製的解決方案:

  1. 枚舉它部署到
  2. 弄清楚,每個Web應用程序與
  3. 訪問一個相關的共享服務提供商所有Web應用程序安裝在SSP上的業務數據目錄以檢索一些數據
  4. 枚舉這些Web應用程序中的所有網站集
  5. 在根據數據的網站集

我得到了第1,3,4和5點,但2有點麻煩。我想避免在任何地方對SSP名稱進行硬編碼,並且不要求服務器場管理員手動編輯配置文件。我需要的所有信息都在Sharepoint配置數據庫中,我只需要知道如何通過對象模型訪問它。

回答

2

不幸的是我沒有支持的方式,我知道這可以做到。相關的類是Microsoft.Office.Server.Administration命名空間中的Microsoft.Office.Server DLL中的SharedResourceProvider。它標誌着內部預先使反射:

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

後反思:

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

另一種方法是寫在其上不建議配置數據庫的SQL查詢。