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 快速启动和顶部导航栏消失的主要内容,如果未能解决你的问题,请参考以下文章