Получить имя связанного поставщика общих услуг?

StackOverflow https://stackoverflow.com/questions/58809

Вопрос

Как программно получить имя поставщика общих служб, связанного с конкретным веб-приложением Sharepoint?

У меня есть индивидуальное решение, которое должно:

  1. Перечислите все веб-приложения, в которых он развернут.
  2. Определите поставщика общих служб, с которым связано каждое из веб-приложений.
  3. Доступ к каталогу бизнес-данных, установленному на SSP, для получения некоторых данных.
  4. Перебрать все семейства веб-сайтов в этих веб-приложениях.
  5. Выполнение различных задач внутри семейств сайтов в соответствии с данными.

С пунктами 1, 3, 4 и 5 я разобрался, а вот 2 несколько хлопотно.Я хочу избежать жесткого кодирования имени SSP где-либо и не требовать от администратора фермы ручного редактирования файла конфигурации.Вся необходимая мне информация находится в базе данных конфигурации Sharepoint, мне просто нужно знать, как получить к ней доступ через объектную модель.

Это было полезно?

Решение

К сожалению, я не знаю поддерживаемого способа, которым это можно сделать.Соответствующий класс — SharedResourceProvider в пространстве имен Microsoft.Office.Server.Administration в библиотеке 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-запроса к базе данных конфигурации, что не рекомендуется.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top