Pergunta

Como você consegue obter o nome de um provedor de serviços compartilhados que está associado a um determinado aplicativo web do Sharepoint?

Eu tenho uma solução personalizada que precisa:

  1. Enumerar todas as aplicações web que é implantado para
  2. Descobrir o provedor de Serviços Compartilhados que cada uma das aplicações web é associado com
  3. Acesso a um Catálogo de Dados corporativos instalados no SSP para recuperar alguns dados
  4. Enumerar todos os conjuntos de sites ou os aplicativos web
  5. Executar várias tarefas dentro do site coleções de acordo com os dados

Eu tenho pontos 1, 3, 4 e 5 descobriram, mas 2 é um pouco problemático.Eu quero evitar codificar o nome do SSP em qualquer lugar e não exigir que o administrador de farm para editar manualmente um arquivo de configuração.Todas as informações que eu preciso é em dados de configuração do Sharepoint, eu só preciso saber como acessá-lo através do modelo de objeto.

Foi útil?

Solução

Infelizmente não há nenhuma maneira que eu conheço que isso pode ser feito.A classe relevante é SharedResourceProvider na Microsoft.Office.Server.Administração de espaço de nomes, no Microsoft.Office.DLL do servidor.É marcado interno para pré-reflexão:

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

Post-reflexão:

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

Uma alternativa seria escrever uma consulta SQL sobre o banco de dados de configuração, o que não é recomendado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top