2010-02-05 55 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