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

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

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

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

有帮助吗?

解决方案

不幸的是,据我所知,没有支持的方法可以做到这一点。相关类是 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 查询,但不推荐这样做。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top