2010-06-15 10 views
8

Ich möchte regelmäßige Benutzer Zugriff auf die "User Information List" in Mysite Root-Site. Ich verwende "RunWithElevatedPrivileges" -Methode. Fehler beim Zugriff verweigert. Zum Beispiel ist meine Root-Site-Sammlung für mysite "http://network.test.com". Der Benutzer möchte die Benutzerinformationen überprüfen und diese Websitesammlung auflisten. Wie kann er darauf zugreifen?Zugriff verweigert, wenn RunWithElevatedPrivileges verwendet wird?

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"]; 
+0

haben Sie den Code auf dem Server ausgeführt, der SharePoint enthält? –

Antwort

6

SPContext.Current Läufe außerhalb des RunWithelevatedPrivileges erhöhten Kontext. Weitere Informationen finden Sie unter this Blogpost.

6

Sie setzen Ihr SPWeb auf SPContext.Current.Web, dies hat keine erhöhten Rechte. Nur SPWebs, die aus SPSites erstellt wurden, die innerhalb des Delegaten erstellt wurden, werden erhöht.

So müssen Sie

SPWeb web = SPContext.Current.Web; 

mit

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

Sie richten Ihre SPWeb ersetzen, dies SPContext.Current.Web keine erhöhten Privilegien. Verweise post:

Verwandte Themen