C# 无法使用C代码隐藏集合区域

C# 无法使用C代码隐藏集合区域,c#,sharepoint,C#,Sharepoint,我们无法隐藏显示在顶部导航栏中的设置区域,我正在使用下面的代码片段来实现相同的功能。但即使代码没有抛出任何错误,子网站也不会被隐藏。在不安全的更新后,代码按预期运行,因此有点不清楚 代码段: using (SPSite siteCollection = new SPSite("http://****:****/VijaiTest/")) { using (SPWeb web = siteCollection.RootWeb) { PublishingWeb pub

我们无法隐藏显示在顶部导航栏中的设置区域,我正在使用下面的代码片段来实现相同的功能。但即使代码没有抛出任何错误,子网站也不会被隐藏。在不安全的更新后,代码按预期运行,因此有点不清楚

代码段:

using (SPSite siteCollection = new SPSite("http://****:****/VijaiTest/"))
{
    using (SPWeb web = siteCollection.RootWeb)
    {
        PublishingWeb publishingWeb = PublishingWeb.GetPublishingWeb(web);
        // Global Navigation 
        //Show Subsites 
        publishingWeb.Navigation.GlobalIncludeSubSites = false;
        //Show Pages 
        publishingWeb.Navigation.GlobalIncludePages = false;
        // Maximum number of dynamic items to show within this level of navigation: 
        publishingWeb.Navigation.GlobalDynamicChildLimit = 60;

        publishingWeb.IncludeInCurrentNavigation = false;

        web.AllowUnsafeUpdates = true;

        SPSecurity.RunWithElevatedPrivileges(delegate()
        {
            //Update the changes
            publishingWeb.Update();
        });
    }
}

我发现你的代码有一些潜在的问题

一,。不要在Using语句中包装SPWeb web=sitecollection.RootWeb

通常情况下,在Using语句中包装SPSite和SPWeb对象是一种好的做法,以确保它们被正确处理,但SPSite.RootWeb属性是该规则的一个例外。根web在释放时将与SPSite对象一起自动释放。由于您拥有SPSite siteCollection=新SPSite。。。包装在Using语句中,您不必担心RootWeb的处理

尝试两次处理根web将向日志中添加错误,并且在以编程方式访问该web对象时可能会导致问题

二,。在SPSecurity.RunWithElevatedPrivileges委托中实例化SPSite和SPWeb对象

要使SPSecurity.RunWithElevatedPrivileges有效,必须在委托函数中检索或创建SPSite和SPWeb对象

您的代码在运行RunWithElevatedPrivileges之前获取SPSite和SPWeb对象,因此对这些对象的任何操作都将在当前用户的上下文中运行,而不是以提升的权限运行

三,。在执行GetPublishingWebweb之前,请检查以确保SPWeb对象是有效的PublishingWeb

发件人:

在使用此方法之前,请检查该方法以确认类的此实例支持发布行为。如果上不支持发布,则包装器的方法和属性可能会出现意外行为

在这些更改之后,您的代码将如下所示:

SPSecurity.runwithLevelatedPrivilegesDelegate{ 使用SPSite siteCollection=new SPSite http://**:**:**/VijaiTest/{ SPWeb=sitecolection.RootWeb; ifPublishingWeb.IsPublishingWebweb{ PublishingWeb PublishingWeb=PublishingWeb.GetPublishingWebweb; //不显示子网站 publishingWeb.Navigation.GlobalIncludeSubSites=false; //不显示页面 publishingWeb.Navigation.GlobalIncludePages=false; //在此导航级别中显示的最大动态项目数: publishingWeb.Navigation.GlobalDynamicChildLimit=60; publishingWeb.IncludeInCurrentNavigation=false; web.AllowUnsafeUpdates=true; //更新更改 发布web.Update; }否则{ 抛出新异常web不是发布web; } } };
你说的固定面积是什么意思?