Tentando obter o gerente do usuário:Obtendo SPServiceContext com SiteSubscriptionId de {00000000-0000-0000-0000-000000000000}

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/53065

Pergunta

Estou tentando obter um gerente de usuário com este código:

SPSecurity.RunWithElevatedPriviliges(delegate
{
  SPSite site = new SPSite(SPContext.Current.Site.Url);
  SPServiceContext context = SPServiceContext.GetContext(site);
  UserProfileManager profileManager = new UserProfileManager(context);
  //Note that I have an SPUser object, user, previously defined.
  UserProfile userProfile = profileManager.GetUserProfile(user.ID);
  UserProfile managerProfile = userProfile.GetManager();
});

Meu problema é que estou recebendo um UserProfileManager nulo.Suspeito que seja porque o SPServiceContext tem um SiteSubcriptionId de {00000000-0000-0000-0000-000000000000}.

Estou depurando isso no meu servidor SharePoint local.Estou executando-o em um ambiente de desenvolvimento no Windows 7.Este erro indica um problema com meu ambiente?

Existe uma maneira melhor de obter o gerente de um determinado SPUser?

EDITAR:

Parece que nem minha máquina local nem meu servidor de teste têm o serviço de perfil de usuário configurado corretamente.Então é provavelmente por isso que não está funcionando.Vou tentar fazer isso funcionar e ver se ainda tenho o problema.

Foi útil?

Solução

O Guid vazio aqui, na verdade, não é preocupante.O SiteSubscriptionId sempre será um Guid em branco, a menos que você tenha multilocação habilitada em seu ambiente.

Habilitando o suporte multilocatário no SharePoint 2010

Talvez seja necessário adicionar permissão para seu usuário no aplicativo de serviço de perfil de usuário.

Em Configurar conexões de sincronização de perfil de usuário eles estavam tentando obter o UserProfileManager via PowerShell e recebendo um erro (NullReferenceException), mas resolveu o problema garantindo que a conta do usuário tentava obter o UserProfileManager tinha permissões:

1) Como administrador com controle total

2) permissões de conexão como controle total

Então você tem acesso ao gerenciador de conexões e pode acessar programaticamente as conexões.

Outras dicas

Além do Administrador e da Permissão no UPSA, precisei adicionar o usuário de configuração do SharePoint como db_owner no ProfileDB.

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