2010-06-15 96 views
8

我希望普通用户可以访问Mysite根站点中的“用户信息列表”。我正在使用“RunWithElevatedPrivileges”方法。仍然拒绝访问拒绝错误。每个例子mysite的我的根网站集合是“http://network.test.com”。用户想要评估这个网站集的用户信息列表。他怎么能访问它?使用RunWithElevatedPrivileges时访问被拒绝?

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

您是否在包含SharePoint的服务器中运行代码? – 2010-06-15 23:20:43

回答

6

SPContext.CurrentRunWithelevatedPrivileges高架环境外运行。欲了解更多信息,请参阅this博客文章。

6

您正在将SPWeb设置为SPContext.Current.Web,但没有提升权限。只有在委托内部创建的SPSites创建的SPWebs才被提升。

因此,你需要用

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

你设置你的SPWeb到SPContext.Current.Web这并没有提升的权限,以取代

SPWeb web = SPContext.Current.Web; 

。 请参阅此post