Zugriff verweigert, wenn RunWithElevatedPrivileges mit?
-
27-09-2019 - |
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"];
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 :