Recuperar os associados do provedor de serviços compartilhados nome?
-
09-06-2019 - |
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:
- Enumerar todas as aplicações web que é implantado para
- Descobrir o provedor de Serviços Compartilhados que cada uma das aplicações web é associado com
- Acesso a um Catálogo de Dados corporativos instalados no SSP para recuperar alguns dados
- Enumerar todos os conjuntos de sites ou os aplicativos web
- 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.
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.