Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SharePoint QuickLaunch和TopNavigationBar取消共享_Sharepoint_Menu_Navigation_Logging - Fatal编程技术网

SharePoint QuickLaunch和TopNavigationBar取消共享

SharePoint QuickLaunch和TopNavigationBar取消共享,sharepoint,menu,navigation,logging,Sharepoint,Menu,Navigation,Logging,我对此完全感到困惑: 我有一个自定义的SharePoint网站,其左侧和顶部导航栏上都有QuickLaunch(默认情况下是可见的) 此自定义站点有多个子站点,它们都从根站点继承导航 一切正常,但在应用程序池回收后,当我第一次进入任何一个站点时,左侧和顶部的菜单都消失了!简单刷新后,一切恢复正常,所有菜单都可见 在重新创建站点和子站点之后,它们的行为是相同的:第一次访问时,菜单不可见,刷新后,菜单可见,并且在我回收应用程序池之前一直可见 有时只有一个菜单(顶栏或快速启动)消失,而第二个菜单通常可

我对此完全感到困惑:

我有一个自定义的SharePoint网站,其左侧和顶部导航栏上都有QuickLaunch(默认情况下是可见的)

此自定义站点有多个子站点,它们都从根站点继承导航

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

在重新创建站点和子站点之后,它们的行为是相同的:第一次访问时,菜单不可见,刷新后,菜单可见,并且在我回收应用程序池之前一直可见

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

事件日志中没有任何内容。不过,ULS日志中有一个跟踪。当快速启动或顶栏消失时,仅添加一行新行(是,仅此行,无堆栈跟踪或任何其他信息):

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


事实上,它说有什么地方出了问题,导致菜单消失了。有谁能帮我诊断一下,或者知道为什么这些菜单会消失吗?

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


你正在运行哪个版本?(Site Actions=>Site Definitions显示了它)

可能是您在Site definition中弄乱了导航,并删除了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();
                        }
                    }
                });
            }
        }
    }
public override void功能已激活(SPFeatureReceiverProperties)
{
SPSite site=properties.Feature.Parent作为SPSite;
使用(SPWeb=site.OpenWeb(“/information”))
{
if(web.Navigation.TopNavigationBar==null)
{
List contentdatabases=new List();
SPSecurity.runWithLevelatedPrivileges(委托()
{
SPNavigationNode=新的SPNavigationNode(“”,web.ServerRelativeUrl,false);
web.AllowUnsafeUpdates=true;
尝试
{
SPNavigationNodeCollection navigationNodes=null;
navigationNodes=web.Navigation.GlobalNodes;
navigationNodes.AddAsFirst(节点);
}
最后
{
web.AllowUnsafeUpdates=false;
}
SPContentDatabase=site.ContentDatabase;
使用(SqlConnection con=newsqlconnection(database.DatabaseConnectionString))
{
con.Open();
使用(SqlCommand=con.CreateCommand())
{
command.CommandText=string.Format(@“更新导航节点”
设置Url='',Eid={0},ElementType=1,DocId=NULL
其中Eid={1}
和WebId='{2}'
和SiteId='{3}',
1002,
node.Id,
web.ID.ToString(),
site.ID.ToString()
);
command.ExecuteNonQuery();
}
}
});
}
}
}

否,发布功能已禁用。这是莫斯2007。你说这是一个“已知情况”,你有任何链接或资源吗?可能是类似的。当你按照我说的做时,“已知情况”就会发生(将发布网站保存为模板,这是不允许的--你需要使用一个小技巧,然后恢复网站--菜单将被破坏,并在下次刷新时修复)好的,谢谢你提供一些线索,但是我创建了这个网站,它是从一个普通模板(ONET.XML文件)创建的,这是一个简单的模板,没有启用发布之类的额外功能。你有没有弄清楚到底是什么原因造成的?我已经通读了这篇文章,但没有任何一篇文章对我们适用。当我在浏览器中点击“刷新”时,两个导航区域将随机渲染或不渲染。10分钟后,对某些子网站而言,这是正常的,但对其他子网站而言则不然。似乎SP变得非常不稳定!在对SharePoint数据库执行任何更改之前,请参阅。