Frage

Ich möchte regelmäßige Benutzer kann die „Benutzerinformationen Liste“ in Mysite Root-Site zugreifen. Ich bin „RunWithElevatedPrivileges“ Methode. Noch Zugriff verweigert Fehler zu werfen. meine Stammwebsitesammlung für mysite pro Beispiel ist „ http://network.test.com “. der Benutzer möchte userinformation Liste dieser Websitesammlung bewerten. Wie kann er, dass zugreifen?

 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"];
War es hilfreich?

Lösung

SPContext.Current läuft außerhalb des RunWithelevatedPrivileges erhöhten Kontext. Für weitere Informationen siehe dieser Blog-Post.

Andere Tipps

Sie Ihre SPWeb zu SPContext.Current.Web Einstellung, diese haben keine Privilegien erhöht. Nur SPWebs von SPSites innerhalb des Delegaten erstellt erstellt werden erhöht.

Sie müssen also ersetzen

SPWeb web = SPContext.Current.Web;

mit

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

Sie richten Ihre SPWeb zu SPContext.Current.Web bedeutet dies nicht erhöht Rechte. Siehe diese Post :

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top