Pergunta

Quero que o usuário regular possa acessar a "Lista de informações do usuário" no site do MySite Root. Estou usando o método "runwithelevatedprivileges". Ainda jogando acesso ao erro negado. por exemplo, minha coleção de sites raiz para mysite é "http://network.test.com". O usuário deseja avaliar a lista de informações do usuário esta coleção de sites. Como ele pode acessar isso?

 SPSecurity.RunWithElevatedPrivileges(delegate
 {
   using (SPSite site = new SPSite(SPContext.Current.Web.Site.ID))
   {

   ServerContext sc = ServerContext.Current;
   UserProfileManager upm = new UserProfileManager(sc);
   UserProfile up = null;
   //get current user's profile (visitor)
   if (upm.UserExists(SPContext.Current.Web.CurrentUser.LoginName))
   {
       up =upm.GetUserProfile(SPContext.Current.Web.CurrentUser.LoginName);

      SPWeb web = SPContext.Current.Web;
      SPList userInformationList = web.Lists["User Information List"];
Foi útil?

Solução

SPContext.Current corre para fora do RunWithelevatedPrivileges contexto elevado. Para mais informações, consulte isto Postagem do blog.

Outras dicas

Você está configurando seu spweb como spcontext.current.web, isso não possui privilégios elevados. Somente Spwebs criados a partir de spsites criados dentro do delegado são elevados.

Então você precisa substituir

SPWeb web = SPContext.Current.Web;

com

SPWeb web = site.OpenWeb(SPContext.Current.Web.ID);

Você está configurando seu spweb como spcontext.current.web Isso não possui privilégios elevados. Consulte isso publicar:

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