سؤال

أريد أن يتمكن المستخدم العادي من الوصول إلى "قائمة معلومات المستخدم" في موقع جذر MySite. أنا أستخدم طريقة "runwithelevatedprivileges". ما زال يرمي الوصول إلى الخطأ. على سبيل المثال مجموعة موقع الجذر الخاص بي لـ MySite هي "http://network.test.com". يريد المستخدم تقييم userInformation قائمة مجموعة الموقع هذه. كيف يمكنه الوصول إلى ذلك؟

 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"];
هل كانت مفيدة؟

المحلول

SPContext.Current يركض خارج RunWithelevatedPrivileges سياق مرتفع. لمزيد من المعلومات انظر هذه مشاركة مدونة.

نصائح أخرى

أنت تقوم بتعيين spweb الخاص بك على spcontext.current.web ، هذا ليس له امتيازات مرتفعة. يتم رفع فقط spwebs التي تم إنشاؤها من spsites التي تم إنشاؤها داخل المندوب.

لذلك تحتاج إلى استبدال

SPWeb web = SPContext.Current.Web;

مع

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

أنت تقوم بتعيين spweb الخاص بك على spcontext.current.web هذا لا يحتوي على امتيازات مرتفعة. الرجوع هذا بريد:

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top