2010-02-05 69 views
3

我这个完全不解:的SharePoint快速启动和TopNavigationBar dissapearing

我有一个自定义SharePoint站点与快速启动的左边和顶部导航栏(这当然是可见的默认情况下)。

这个自定义网站有几个子网站,所有继承导航从根网站。

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

重新创建网站和子网站后,他们的行为是相同的:在第一次访问 - 菜单不可见,刷新后,他们是可见的,他们保持可见,直到我做一个应用程序池回收。

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

EventLog中没有任何内容。尽管如此,在ULS日志中还是有一丝痕迹。当快速启动或顶部栏消失只有一个新行(是的,只有这一个,没有堆栈跟踪或任何进一步的信息)被添加:

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

嗯,的确它说,什么是错,导致该菜单消失。任何人都可以帮助我如何诊断这或者知道为什么这些菜单正在消失?

+0

你有没有搞清楚究竟是什么造成这个?我已经读过这篇文章,但没有任何内容适用于我们。随着我在浏览器中刷新,导航区域会随机呈现或不呈现。 10分钟后,对于一些子站点而言是好的,但对其他站点不适用。看起来像SP变得相当won!! – Tor 2015-09-04 17:07:11

回答

0

Gylo你有没有在这些网站启用了发布功能?这是已知的情况下恢复已保存的网站模板与启用发布(使用小破解)首次导航不会出现在第一次。

你正在运行什么版本? (网站操作=>网站定义显示它)

+0

不,发布功能已禁用。这是在MOSS 2007. 你说这是一个“已知的情况”,你有任何链接或资源?也许它是类似的东西。 – Gylo 2010-02-05 14:48:52

+0

当您按照我所说的做了“已知的情况”时(将发布网站保存为模板,这是不允许的 - 您需要使用一个小窍门,然后恢复网站 - 菜单将被打破并成为固定在下一次刷新和) – 2010-02-05 16:30:26

+0

好的,谢谢你的一些线索,但我创建的网站,并从一个普通的模板(ONET.XML文件)这是一个简单的模板,并没有额外的功能,如发布启用。 – Gylo 2010-02-06 10:51:40

0

这可能是你在网站定义中导航混乱,并删除了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(); 
         } 
        } 
       }); 
      } 
     } 
    } 
+0

在对SharePoint数据库执行任何更改之前,请参阅[本文](https://support.microsoft.com/zh-cn/kb/841057)。 – dstarkowski 2015-12-09 10:41:41