SharePoint 快速启动和顶部导航栏消失

Posted

技术标签:

【中文标题】SharePoint 快速启动和顶部导航栏消失【英文标题】:SharePoint QuickLaunch and TopNavigationBar dissapearing 【发布时间】:2011-01-13 10:57:12 【问题描述】:

我对此完全感到困惑:

我有一个自定义 SharePoint 网站,左侧有 QuickLaunch,顶部导航栏(默认情况下当然可见)。

这个自定义站点有几个子站点,它们都继承了根站点的导航。

一切正常,但是当我第一次进入任何网站时,应用程序池回收后左侧和顶部的两个菜单都消失了!简单刷新后一切恢复正常,所有菜单都可见。

在重新创建站点和子站点后,它们的行为相同:首次访问时 - 菜单不可见,刷新后它们可见并且它们保持可见,直到我使应用程序池回收。

有时只有一个菜单(顶部栏或快速启动)消失,而第二个菜单通常可见,而且我还认为我遇到了在网站正常使用期间它消失的情况,而不是在回收之后。

EventLog 中没有任何内容。不过,ULS 日志中有一条踪迹。当快速启动或顶部栏消失时,只添加一个新行(是的,只有这一行,没有堆栈跟踪或任何其他信息):

02/05/2010 10:24:19.18 w3wp.exe (0x171C) 0x17BC Windows SharePoint Services 常规 8kh7 高 无法完成此操作。再试一次。

嗯,确实是说有问题导致菜单消失。谁能帮我诊断一下,或者知道为什么这些菜单消失了?

【问题讨论】:

你有没有弄清楚到底是什么原因造成的?我已经通读了这个帖子,但没有什么特别适用于我们。当我在浏览器中点击刷新时,两个导航区域都会随机渲染或不渲染。 10 分钟后,某些子站点可以正常使用,但其他子站点则不行。似乎 SP 越来越不靠谱了! 【参考方案1】:

Gylo 是否在这些网站上启用了发布功能?这是在启用发布(使用小技巧)的情况下恢复保存的站点模板时的已知情况,其中顶部导航不会第一次出现。

你运行的是什么版本? (站点操作 => 站点定义显示)

【讨论】:

否,发布功能已禁用。它在MOSS 2007上。你说这是“已知情况”,你有任何链接或资源吗?也许是类似的东西。 “已知情况”发生在你按我说的时候(将发布站点保存为模板,这是不允许的——你需要使用一个小技巧,然后恢复站点——菜单将损坏并在下次刷新时修复) 好的,感谢您提供一些线索,但我从常规模板(ONET.XML 文件)创建站点及其子站点,该模板是一个简单的模板,没有启用发布等额外功能。【参考方案2】:

可能是您在站点定义中弄乱了导航,并删除了 ID 为 1002 的导航节点。该节点负责存储网页顶部导航,即使您的网页使用共享导航,您也会在某些情况。 检查 your-web.Navigation.TopNavigationBar 是否为空。如果是,那么恢复节点#1002 并不是很简单。以下是我为在生产环境中解决此问题而编写的补丁。先测试一下!

    public override void FeatureActivated(SPFeatureReceiverProperties properties)
    
        SPSite site = properties.Feature.Parent as SPSite;

        using (SPWeb web = site.OpenWeb("/information"))
        
            if (web.Navigation.TopNavigationBar == null)
            
                List<SPContentDatabase> contentdatabases = new List<SPContentDatabase>();

                SPSecurity.RunWithElevatedPrivileges(delegate()
                
                    SPNavigationNode node = new SPNavigationNode("", web.ServerRelativeUrl, false);

                    web.AllowUnsafeUpdates = true;

                    try
                    
                        SPNavigationNodeCollection navigationNodes = null;
                        navigationNodes = web.Navigation.GlobalNodes;

                        navigationNodes.AddAsFirst(node);
                    
                    finally
                    
                        web.AllowUnsafeUpdates = false;
                    

                    SPContentDatabase database = site.ContentDatabase;

                    using (SqlConnection con = new SqlConnection(database.DatabaseConnectionString))
                    
                        con.Open();

                        using (SqlCommand command = con.CreateCommand())
                        
                            command.CommandText = string.Format(@"UPDATE NavNodes
                            SET Url='', Eid=0, ElementType=1, DocId=NULL
                            WHERE Eid=1
                                and WebId='2'
                                and SiteId='3'",
                                1002,
                                node.Id,
                                web.ID.ToString(),
                                site.ID.ToString()
                            );

                            command.ExecuteNonQuery();
                        
                    
                );
            
        
    

【讨论】:

在对 SharePoint 数据库执行任何更改之前,请参阅 this article。

以上是关于SharePoint 快速启动和顶部导航栏消失的主要内容,如果未能解决你的问题,请参考以下文章

SharePoint 2007隐藏快速启动栏

如何快速在自定义导航栏顶部制作一半的 ImageView

Xcode 快速导航栏在模拟器运行时消失,但在情节提要中不会

自定义sharepoint中某些页面的快速启动项

keyWindow 顶部的覆盖视图快速消失(iOS)

如何将SharePoint顶部导航定位到中心?