У нас есть клиент, который обновился до CMS 12. Раньше они использовали Lionbridge для переводов, но когда мы установили новейшую версию (2.0.0.1200), мы получили следующее исключение при запуске:
Полная трассировка стека:
EPiServer.Framework.Initialization.InitializationException: Initialize action failed for Initialize on class Lionbridge.Translate.WorkspaceInitializer, LionbridgeConnector, Version=2.0.0.1200, Culture=neutral, PublicKeyToken=null
---> System.InvalidOperationException: Lazy loaded property value is not supported by the current property instance
at EPiServer.DataAccess.Internal.LazyPropertyValueLoader.SetValue(PropertyData property, PropertyDataRecord dataRecord, Func`3 valueConverter)
at EPiServer.DataAccess.Internal.JsonPropertyValueConverter.SetValue(PropertyJson property, PropertyDataRecord dataRecord, PropertyValueConverterContext context)
at EPiServer.DataAccess.Internal.JsonPropertyValueConverter.EPiServer.DataAccess.Internal.IPropertyValueConverter.SetValue(PropertyData property, PropertyDataRecord dataRecord, PropertyValueConverterContext context)
at EPiServer.DataAccess.Internal.ContentDB.ReadPropertyData(PropertyData prop, DbDataReader reader, ContentReference contentLink, CultureInfo language)
at EPiServer.DataAccess.Internal.ContentListDB.ReadCustomProperties(DbDataReader reader, Dictionary`2 allFetchedItems, Boolean isReadingVersions)
at EPiServer.DataAccess.Internal.ContentListDB.ReadPublishedList(DbCommand cmd)
at EPiServer.DataAccess.Internal.ContentListDB.<>c__DisplayClass19_0.b__0()
at EPiServer.Data.Providers.Internal.SqlDatabaseExecutor.<>c__DisplayClass24_0`1.b__0()
at EPiServer.Data.Providers.SqlTransientErrorsRetryPolicy.Execute[TResult](Func`1 method)
at EPiServer.Data.Providers.Internal.SqlDatabaseExecutor.Execute[TResult](Func`1 action)
at EPiServer.DataAccess.Internal.ContentListDB.LoadSpecificContentInstances(IList`1 contentLinks, Int32 languageBranchID)
at EPiServer.Core.Internal.DefaultContentProviderDatabase.LoadSpecificContentInstances(IList`1 contentLinks, Int32 languageBranchID)
at EPiServer.Core.Internal.DefaultContentProvider.<>c__DisplayClass13_0.b__1(IList`1 refs)
at EPiServer.Core.Internal.DefaultContentProvider.BatchLoad(IList`1 contentLinks, Func`2 dbLoader)
at EPiServer.Core.Internal.DefaultContentProvider.LoadContents(IList`1 contentReferences, ILanguageSelector selector)
at EPiServer.Core.ContentProvider.GetContentBatch(IList`1 batch, ILanguageSelector selector, List`1& contents, Dictionary`2& contentMap)
at EPiServer.Core.ContentProvider.GetScatteredContents(IEnumerable`1 contentLinks, ILanguageSelector selector)
at EPiServer.Core.ContentProvider.LoadBatched(IList`1 contentReferences, ILanguageSelector selector)
at EPiServer.Core.Internal.ProviderPipelineImplementation.GetItems(ContentProvider provider, IList`1 contentLinks, LoaderOptions loaderOptions)
at EPiServer.Core.Internal.DefaultContentLoader.GetChildren[T](ContentReference contentLink, LoaderOptions loaderOptions, Int32 startIndex, Int32 maxRows)
at EPiServer.Core.Internal.DefaultContentLoader.GetChildren[T](ContentReference contentLink, LoaderOptions loaderOptions)
at EPiServer.Core.Internal.DefaultContentLoader.GetChildren[T](ContentReference contentLink)
at Advanced.CMS.ExternalReviews.DraftContentLoader.GetChildren[T](ContentReference contentLink)
at EPiServer.Core.Internal.DefaultContentRepository.GetChildren[T](ContentReference contentLink)
at Lionbridge.Translate.WorkspaceInitializer.Initialize(InitializationEngine context)
at EPiServer.Framework.Initialization.Internal.ModuleNode.<>c__DisplayClass4_0.b__0()
at EPiServer.Framework.Initialization.Internal.ModuleNode.Execute(Action a, String key)
at EPiServer.Framework.Initialization.Internal.ModuleNode.Initialize(InitializationEngine context)
at EPiServer.Framework.Initialization.InitializationEngine.InitializeModules()
--- End of inner exception stack trace ---
at EPiServer.Framework.Initialization.InitializationEngine.InitializeModules()
at EPiServer.Framework.Initialization.InitializationEngine.ExecuteTransition(Boolean continueTransitions)
at EPiServer.Framework.Initialization.InitializationEngine.Initialize()
at EPiServer.Hosting.Internal.EPiServerFrameworkHost.StartAsync(CancellationToken cancellationToken)
at Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken cancellationToken)
at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.Run(IHost host)
at BBSCatalyst.Web.Program.Main(String[] args) in C:UsersSamsourcereposneogen-episerverWebsiteSolutionBBSCatalyst.WebProgram.cs:line 15
После долгих поисков мы обнаружили, что проблема связана с этими типами определения свойств: Список кодов анализа, конфигурация проекта
Эти старые типы определений свойств по-прежнему назначались определениям свойств для типов контента Lionbridge. Мы сами исправили проблему вручную, используя следующий скрипт:
/* Update Lionbridge Property Definitions to have the new property definition types*/
DECLARE @OldAnalysisCodeTypeId AS INT = (SELECT Top 1 pkId FROM [dbo].[tblPropertyDefinitionType] WHERE TypeName="Lionbridge.Translate.AnalysisCodeListProperty")
DECLARE @NewAnalysisCodeTypeId AS INT = (SELECT Top 1 pkId FROM [dbo].[tblPropertyDefinitionType] WHERE TypeName="LionbridgeConnector.EPiServer.Workspace.Models.AnalysisCodes")
DECLARE @OldProjectConfigTypeId AS INT = (SELECT Top 1 pkId FROM [dbo].[tblPropertyDefinitionType] WHERE TypeName="Lionbridge.Translate.ProjectConfigurationListProperty")
DECLARE @NewProjectConfigTypeId AS INT = (SELECT Top 1 pkId FROM [dbo].[tblPropertyDefinitionType] WHERE TypeName="LionbridgeConnector.EPiServer.Workspace.Models.ProjectConfigurations")
UPDATE [dbo].[tblPropertyDefinition] SET fkPropertyDefinitionTypeID = @NewAnalysisCodeTypeId WHERE fkPropertyDefinitionTypeID = @OldAnalysisCodeTypeId
UPDATE [dbo].[tblPropertyDefinition] SET fkPropertyDefinitionTypeID = @NewProjectConfigTypeId WHERE fkPropertyDefinitionTypeID = @OldProjectConfigTypeId
Я предполагаю, что в новейшей версии Lionbridge Connector это было упущено из виду, хотя я не уверен на 100%, почему это произошло с нашим клиентом.
05 апр. 2023 г.