我对此感到非常困惑:
我有一个自定义的SharePoint站点,在左侧和顶部导航栏上都有QuickLaunch (当然,它们在默认情况下是可见的)。
此自定义站点有几个子站点,它们都继承了根站点的导航。
一切正常,但是在应用程序池回收之后,当我第一次进入任何一个站点时,左侧和顶部的菜单都会消失!简单刷新后,一切都恢复正常,所有菜单都可见。
重新创建站点和子站点后,它们的行为是相同的:第一次访问时,菜单不可见,刷新后它们是可见的,并且它们保持可见,直到我回收应用程序池为止。
有时只有一个菜单(顶栏或快速启动)消失,第二个菜单通常是可见的,我也认为我遇到了一种情况,当它在正常使用网站时消失,而不是在回收之后。
EventLog中没有任何内容。不过,在ULS日志中有一个跟踪。当快速启动或顶部栏消失时,只会添加一行新行(是的,只有这一行,没有堆栈跟踪或任何进一步的信息):
02/05/2010 10:24:19.18 w3wp.exe (0x171C) 0x17BC Windows SharePoint服务常规8kh7高无法完成此操作。再试试。
嗯,确实是说出了什么问题,导致菜单消失了。有没有人能帮我诊断这个问题,或者知道这些菜单消失的原因?
发布于 2010-02-05 21:54:15
Gylo你是否在这些网站上启用了发布功能?这是一个已知的情况,当恢复保存的网站模板并启用发布时(使用一个小技巧),顶部导航不会第一次出现。
您运行的是什么版本?(站点操作=>站点定义显示它)
发布于 2010-03-18 17:04:22
可能是您在网站定义中处理了导航,并删除了Id为1002的导航节点。此节点负责存储web顶级导航,即使您的web使用共享导航,您也会在某些情况下获得消失的导航。检查-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();
}
}
});
}
}
}https://stackoverflow.com/questions/2206240
复制相似问题