检索关联的共享服务提供商的名称?

时间:2008-09-12 12:24:40

标签: sharepoint moss sharedservicesprovider

如何以编程方式检索与特定Sharepoint Web应用程序关联的共享服务提供程序的名称?

我有一个需要的自定义解决方案:

  1. 枚举其部署到
  2. 的所有Web应用程序
  3. 找出与每个Web应用程序相关联的共享服务提供程序
  4. 访问SSP上安装的业务数据目录以检索某些数据
  5. 枚举这些网络应用程序中的所有网站集
  6. 根据数据
  7. 在网站集中执行各种任务

    我得到了积分1,3,4和5,但是2有点麻烦。我想避免在任何地方硬编码SSP名称,也不要求服务器场管理员手动编辑配置文件。我需要的所有信息都在Sharepoint配置数据库中,我只需要知道如何通过对象模型访问它。

1 个答案:

答案 0 :(得分:1)

不幸的是,我不知道可以做到这一点的支持方式。相关类是Microsoft.Office.Server.Administration命名空间中的SharedResourceProvider,位于Microsoft.Office.Server DLL中。它标志着内部如此预先反思:

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查询。