Sitecore 7.1 升级 - System.Xml.XmlException 安装更新包时

Sitecore 7.1 Upgrade - System.Xml.XmlException while installing update package

我正在尝试将 Sitecore 从 7.0(修订版 130424)升级到 Sitecore 7.1(修订版 130926),并且每当我尝试在更新安装向导中安装更新包时。它每次都卡在某个点,下面是我在发生时看到的日志异常。

2376 15:41:17 ERROR Attempted to load invalid xml.
Exception: System.Xml.XmlException
Message: The 'r' start tag on line 1 position 2 does not match the end tag of 'd'. Line 1, position 230.
Source: System.Xml
   at System.Xml.XmlTextReaderImpl.Throw(Exception e)
   at System.Xml.XmlTextReaderImpl.Throw(String res, String[] args)
   at System.Xml.XmlTextReaderImpl.ThrowTagMismatch(NodeData startTag)
   at System.Xml.XmlTextReaderImpl.ParseEndElement()
   at System.Xml.XmlTextReaderImpl.ParseElementContent()
   at System.Xml.XmlTextReaderImpl.Read()
   at System.Xml.XmlLoader.LoadNode(Boolean skipOverWhitespace)
   at System.Xml.XmlLoader.LoadDocSequence(XmlDocument parentDoc)
   at System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace)
   at System.Xml.XmlDocument.Load(XmlReader reader)
   at System.Xml.XmlDocument.LoadXml(String xml)
   at Sitecore.Xml.XmlUtil.LoadXml(String xml)

2376 15:41:17 ERROR First 200 characters: <r>  <r id="{4B77BB29-C937-4620-A6CC-A14B1A38DE8A}" par="Id=RenderView&amp;Path=%2fsitecore%2fshell%2fclient%2fSpeak%2fContent%2fDocumentation%2fExamples%2fChildRenderer.cshtml" uid="{AF0DDE68-3A6B-43
2376 15:41:17 ERROR Call stack:    at Sitecore.Xml.XmlUtil.LoadXml(String xml)
   at Sitecore.Data.Fields.LayoutField.LoadData()
   at Sitecore.Data.Fields.LayoutField..ctor(Field innerField)
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
   at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at Sitecore.Reflection.ReflectionUtil.CreateObject(Type type, Object[] parameters)
   at Sitecore.Data.Fields.FieldType.GetField(Field field)
   at Sitecore.Data.Fields.FieldTypeManager.GetField(Field field, String runtimeValue)
   at Sitecore.Data.Fields.FieldTypeManager.GetField(Field field)
   at Sitecore.Links.ItemLinks.AddLinks(Field field, List`1 links, ItemLinkState linkState)
   at Sitecore.Links.ItemLinks.GetLinks(ItemLinkState linkState, Boolean allVersions, Boolean includeStandardValuesLinks)
   at Sitecore.Links.LinkDatabase.UpdateItemVersionReferences(Item item)
   at Sitecore.Links.ItemEventHandler.OnItemSaved(Object sender, EventArgs args)
   at Sitecore.Events.Event.EventSubscribers.RaiseEvent(String eventName, Object[] parameters, EventResult result)
   at Sitecore.Events.Event.EventSubscribers.RaiseEvent(String eventName, Object[] parameters)
   at Sitecore.Events.Event.RaiseEvent(String eventName, Object[] parameters)
   at Sitecore.Events.Event.RaiseItemSaved(Object sender, ItemSavedEventArgs args)
   at Sitecore.Events.Event.DataEngine_ItemSaved(Object sender, ExecutedEventArgs`1 e)
   at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
   at Sitecore.Data.Engines.EngineCommand`2.RaiseExecuted()
   at Sitecore.Data.Engines.EngineCommand`2.Executed()
   at Sitecore.Data.Engines.EngineCommand`2.Execute()
   at Sitecore.Data.Engines.DataEngine.SaveItem(Item item)
   at Sitecore.Data.Managers.ItemProvider.SaveItem(Item item)
   at Sitecore.Data.Managers.ItemManager.SaveItem(Item item)
   at Sitecore.Data.Items.ItemEditing.AcceptChanges(Boolean updateStatistics, Boolean silent)
   at Sitecore.Update.Installer.Items.ItemFieldChangedProcessor.Worker.UpdateField(Field field, ChangeEntry entry)
   at Sitecore.Update.Installer.Items.ItemFieldChangedProcessor.Worker.UpdateField(Field field, ChangeEntry entry, CommandInstallerContext context)
   at Sitecore.Update.Installer.Items.ItemFieldChangedProcessor.Process(String commandKey, Item versionedItem, Field field, ChangeEntry valueEntry, ICommand command, CommandInstallerContext context, Worker worker)
   at Sitecore.Update.Installer.Items.ItemFieldChangedProcessor.Process(String commandKey, Item versionedItem, Field field, ChangeEntry valueEntry, ICommand command, CommandInstallerContext context)
   at Sitecore.Update.Installer.Items.AddItemCommandInstaller.ItemInstaller.UpdateSharedFields(String addCommandKey, Item sitecoreItem, SyncItem item, CommandInstallerContext context)
   at Sitecore.Update.Installer.Items.AddItemCommandInstaller.ItemInstaller.DoInstall(AddItemCommand addItemCommand, PackageEntry entry, CommandInstallerContext commandContext)
   at Sitecore.Update.Installer.Items.AddItemCommandInstaller.DoInstall(ICommand cmd, PackageEntry entry, CommandInstallerContext commandContext)
   at Sitecore.Update.Installer.Items.BaseItemCommandInstaller.Put(PackageEntry entry)
   at Sitecore.Install.Framework.SinkDispatcher.Put(PackageEntry entry)
   at Sitecore.Install.Utils.EntrySorter.Flush()
   at Sitecore.Install.Framework.EntryBuilder.Flush()
   at Sitecore.Install.Zip.PackageReader.Populate(ISink`1 sink)
   at Sitecore.Install.Utils.EntrySorter.Populate(ISink`1 sink)
   at Sitecore.Update.Installer.DiffInstaller.InstallPackage(String path, InstallMode mode, ILog installationProcessLogger, IList`1 entries, String rollbackPackagePath, Boolean& hasPostAction, String& historyPath)
   at Sitecore.Update.UpdateHelper.Install(PackageInstallationInfo info, ILog installationProcessLogger, String& historyPath)
   at Sitecore.Update.InstallUpdatePackage.Install()
   at Sitecore.Update.InstallUpdatePackage.InstallPackage(MetadataView view)
   at Sitecore.Update.InstallUpdatePackage.OnLoad(EventArgs e)
   at System.Web.UI.Control.LoadRecursive()
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.ProcessRequest()
   at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context)
   at System.Web.UI.Page.ProcessRequest(HttpContext context)
   at ASP.sitecore_admin_wizard_installupdatepackage_aspx.ProcessRequest(HttpContext context)
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
   at System.Web.HttpApplication.PipelineStepManager.ResumeSteps(Exception error)
   at System.Web.HttpApplication.BeginProcessRequestNotification(HttpContext context, AsyncCallback cb)
   at System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context)
   at System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr rootedObjectsPointer, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)
   at System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr rootedObjectsPointer, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)
   at System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr pHandler, RequestNotificationStatus& notificationStatus)
   at System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr rootedObjectsPointer, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)
   at System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr rootedObjectsPointer, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)

我在分析包时没有看到任何错误,但在我尝试安装更新后,这个异常被记录下来。

有没有其他人在尝试更新时遇到过这个问题?有什么线索吗?

我以前没有遇到过这个问题,但看起来某个项目的 __renderings 字段已损坏。

您应该能够分辨出哪个项目,因为更新安装向导将跟踪它更改的所有项目并将它们打印在屏幕上 - 这将是最后一个更改的项目。

确定项目后,找到它(通过 guid)并查看项目标准字段上的布局部分。打开顶部功能区中的原始值,然后在字段中找到 xml 的问题。

更正后,再次尝试重新运行更新向导,看看是否能解决问题。