2

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

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

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

第 1、3、4 和 5 点我算出来了,但第 2 点有点麻烦。我想避免在任何地方对 SSP 名称进行硬编码,并且不需要场管理员手动编辑配置文件。我需要的所有信息都在 Sharepoint 配置数据库中,我只需要知道如何通过对象模型访问它。

4

1 回答 1

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

于 2008-09-15T12:46:45.427 回答