2013-08-07 52 views
2

剛將Umbraco V6.1.1站點升級到V6.1.3。我的工作站上一切順利。將所有文件刪除後將文件複製到Web服務器,對數據庫也一樣。設置所有目錄權限並運行該站點。網站(這是MVC)運行但有兩個問題,我無法理解,真的很感謝一些幫助。Umbraco V6.1.3 Lucene索引損壞

帶有讀取過去EOF錯誤的單頁錯誤。這是它試圖運行的觀點。錯誤是在粗體鏈接。

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage 

@{ 
    Layout = "BasePage.cshtml"; 
} 
      <div class="row-fluid"> 
       <div class="span12"> 
        <h1>@Umbraco.Field("pageName")</h1> 
        @Umbraco.Field("pageText") 
       </div> 
      </div> 
      <div class="row-fluid"> 
       <div class="span12"> 
       @foreach (var page in Model.Content.Children) { 
        <section class="well"> 
        <h3>@page.Name</h3> 
        @if(page.Children.Count() > 0) { 
         <ul> 
         **@foreach (var pub in page.Children) {** 
          <li><a href="@Umbraco.Media(pub.GetPropertyValue("publication")).Url" title="@pub.Name" target="_blank">@pub.Name</a></li> 
         } 
         </ul> 
        } 
        </section> 
       } 
        </div> 
      </div> 

堆棧跟蹤是

[IOException: read past EOF] 
    Lucene.Net.Index.FindSegmentsFile.Run(IndexCommit commit) +2040 
    Lucene.Net.Index.DirectoryReader.Open(Directory directory, IndexDeletionPolicy deletionPolicy, IndexCommit commit, Boolean readOnly, Int32 termInfosIndexDivisor) +57 
    Lucene.Net.Search.IndexSearcher..ctor(Directory path, Boolean readOnly) +29 
    Examine.LuceneEngine.Providers.LuceneSearcher.ValidateSearcher(Boolean forceReopen) +136 

其他(我認爲相關的問題)是在CMS,打開開發科的時候,我得到關於它巨大的錯誤消息的JavaScript警告到Lucene

error: {"Message":"An error has occurred.","ExceptionMessage":"The 'ObjectContent`1' type failed to serialize the response body for content type 'application/json; charset=utf-8'.","ExceptionType":"System.InvalidOperationException","StackTrace":null,"InnerException":{"Message":"An error has occurred.","ExceptionMessage":"Could not create an index searcher with the supplied lucene directory","ExceptionType":"System.ApplicationException","StackTrace":" at Examine.LuceneEngine.Providers.LuceneSearcher.ValidateSearcher(Boolean forceReopen)\r\n at Examine.LuceneEngine.Providers.LuceneSearcher.GetSearcher()\r\n at Umbraco.Web.Search.ExamineExtensions.GetIndexReaderForSearcher(BaseLuceneSearcher searcher)\r\n at Umbraco.Web.Search.ExamineExtensions.GetIndexDocumentCount(LuceneIndexer indexer)\r\n at Umbraco.Web.WebServices.ExamineManagementApiController.CreateModel(BaseIndexProvider indexer)\r\n at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()\r\n at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)\r\n at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)\r\n at Newtonsoft.Json.Serialization.JsonArrayContract.CreateWrapper(Object list)\r\n at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.SerializeValue(JsonWriter writer, Object value, JsonContract valueContract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerProperty)\r\n at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.Serialize(JsonWriter jsonWriter, Object value)\r\n at Newtonsoft.Json.JsonSerializer.SerializeInternal(JsonWriter jsonWriter, Object value)\r\n at System.Net.Http.Formatting.JsonMediaTypeFormatter.<>c__DisplayClassd.<WriteToStreamAsync>b__c()\r\n at System.Threading.Tasks.TaskHelpers.RunSynchronously(Action action, CancellationToken token)","InnerException":{"Message":"An error has occurred.","ExceptionMessage":"read past EOF","ExceptionType":"System.IO.IOException","StackTrace":" at Lucene.Net.Index.SegmentInfos.FindSegmentsFile.Run(IndexCommit commit)\r\n at Lucene.Net.Index.DirectoryReader.Open(Directory directory, IndexDeletionPolicy deletionPolicy, IndexCommit commit, Boolean readOnly, Int32 termInfosIndexDivisor)\r\n at Lucene.Net.Search.IndexSearcher..ctor(Directory path, Boolean readOnly)\r\n at Examine.LuceneEngine.Providers.LuceneSearcher.ValidateSearcher(Boolean forceReopen)"}}} 

已經嘗試了Umbraco論壇,但沒有回覆。如果這是一件不容易的事,我當然仍然需要知道。

任何意見將不勝感激。

回答

21

我會備份索引(它們在app_data \ temp \ ....中),然後刪除它們並重新啓動應用程序池。

Umbraco將在下次啓動時重建它們(可能需要5-10分鐘來處理大型數據庫 - 150k節點)。

它可能是一個損壞的索引(在這種情況下,抓住備份並使用盧克,看看它是否損壞),或者索引版本可能改變 - 這是相同的結果。

https://code.google.com/p/luke/

+0

謝謝!刪除TEMP/ExamineIndexes目錄的內容並重新啓動應用程序池清除了這兩個故障。這是一個非常大的重量:) – Craig

+0

沒問題。我遇到類似的問題與腐敗索引:( –

+0

+1 - 解決了我的問題太 –