فشل تغيير SharePoint PublishingWeb في ظل سياق الأمان المرتفع ، لماذا؟

StackOverflow https://stackoverflow.com/questions/3612903

  •  26-09-2019
  •  | 
  •  

سؤال

أواجه مشكلة في تحديث سمة نشر SharePoint في ظل RunwitheLevatedPrivileges. يفشل باستثناء "التحقق من صحة الأمان لهذه الصفحة غير صالح" في هذا السطر: "pubWeb.includeincurrentNavigation = false ؛". فيما يلي الرمز الذي أحاول تشغيله. في العادة ، يمكنك تعيين lemtunsafeupdates = true ، لكن PublishingWeb ليس لديها هذه الخاصية الخاصة.

سؤالي هو ما هي الطريقة الصحيحة لتحديث سمات publishingweb في سياق مرتفع؟

            SPSecurity.RunWithElevatedPrivileges(delegate()
            {
                using (SPSite siteCollection = new SPSite(parentSiteUrl))
                {
                    //siteCollection.AllowUnsafeUpdates = true;
                    using (SPWeb web = siteCollection.OpenWeb(subSiteUrl))
                    {
                        //web.AllowUnsafeUpdates = true;
                        if (PublishingWeb.IsPublishingWeb(web))
                        {
                            // hide new sub-site from navigation elements.
                            PublishingWeb pubWeb = PublishingWeb.GetPublishingWeb(web);
                            pubWeb.IncludeInCurrentNavigation = false;
                            pubWeb.IncludeInGlobalNavigation = false;
                            pubWeb.Update();
                        }
                    }
                }
            });
هل كانت مفيدة؟

المحلول

إذا حدث هذا التغيير في Postback (منشور) ، فيجب أن تتصل SPSecurity.ValidateFormDigest() قبل إجراء التغيير. لا يتم استخدام LoomunsafeUpdates إلا لطلبات HTTP Get.

إذا كان هذا طلبًا ، كنت أتوقع أن يكون خط التعليق قد نجح ، لكن بما أنه تم التعليق ، فأنا أفترض أنه لم يفعل ذلك. أود أن أقترح عليك استخدام:

pubWeb.Web.AllowUnsafeUpdates = true

ك PublishingWeb هو غلاف ل SPWeb مثيل ، والذي يمكن الوصول إليه عبر Web منشأه. إنه أمر غريب رغم أنني كنت أتوقع توفيره SPWeb أن تكون نفس الحالة (وعلى هذا النحو ، كان ينبغي أن يعمل خطك المعلق.)

نصائح أخرى

كان يقرأ قليلاً عن استخدام هذه الخاصية

pubWeb.Navigation.ExcludeFromNavigation (true ، web.id) ؛

بدلاً من

pubWeb.includeincurrentNavigation = false ؛

pubWeb.includeingLobalNavigation = false ؛

لست متأكدًا مما إذا كان هذا مناسبًا لما تحاول تحقيقه.

SPSecurity.RunWithElevatedPrivileges(delegate()
                {
                    using (SPSite siteCollection = new SPSite(parentSiteUrl))
                    {
                        //siteCollection.AllowUnsafeUpdates = true;
                        using (SPWeb web = siteCollection.OpenWeb(subSiteUrl))
                        {
                            //web.AllowUnsafeUpdates = true;
                            if (PublishingWeb.IsPublishingWeb(web))
                            {
                                // hide new sub-site from navigation elements.
                                PublishingWeb pubWeb = PublishingWeb.GetPublishingWeb(web);
                                pubWeb.Navigation.ExcludeFromNavigation(true, web.ID);
                                pubWeb.Update();
                            }
                        }
                    }
                });
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top