我希望普通用户可以访问Mysite根网站中的“用户信息列表”。我正在使用“RunWithElevatedPrivileges”方法。仍然抛出访问被拒绝错误。每个例子我的mysite的根网站集是“http://network.test.com”。用户想要评估此网站集的用户信息列表。他怎么能访问它?
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 :(得分:6)
SPContext.Current
在RunWithelevatedPrivileges
提升的上下文之外运行。有关详细信息,请参阅this博文。
答案 1 :(得分:6)
您正在将SPWeb设置为SPContext.Current.Web,但这没有提升权限。只有在委托中创建的SPSites创建的SPWebs才会升级。
所以你需要更换
SPWeb web = SPContext.Current.Web;
与
SPWeb web = site.OpenWeb(SPContext.Current.Web.ID);
答案 2 :(得分:-1)
您将SPWeb设置为SPContext.Current.Web,但这并没有提升权限。 请参阅此post: