If you can try forcing a restart on the test instance, sometimes the model syncing fails. If this doesn't work try adding the old code back in again, deploying, removing it and republishing
Unfortunately we have run into this error more and more recently. It happens after a publish whenever there is a change to a model. We usually just trigger a restart after a deploy and this no longer is an issue.
Thanks guys, restarting didn't solve the issue. I will try Scotts suggestion and will post back.
So I reverted all changes in the code and pushed that branch to our dev instance. I also restarted for good measuer. While the website is working once again, I now have the following strange issue:
When I try to edit a page through the CMS backend, it will show me the content of the page in the "On Page Editing" mode (but wont let me edit anything), but nothing will happen if I try to select the "All Properties" mode (i.e. it will not switch to that view).
Using the log stream I tried to check what the issue could be and found the following error which seems to be relevant to this case?
System.NullReferenceException: Object reference not set to an instance of an object.
at A1Digital.Site.Helpers.Selections.DataLayerCoreStorySelectionFactory.GetSelections(ExtendedMetadata metadata)
at EPiServer.Shell.UI.Rest.DefaultMetadataStoreModelCreator.GetSelections(ExtendedMetadata metadata, MetadataStoreModel metadataDTO, ISelectionFactory[] selectionFactories)
at EPiServer.Shell.UI.Rest.DefaultMetadataStoreModelCreator.CreateFromModelMetadata(ExtendedMetadata metadata, LocalizationService localizationService, UIDescriptorRegistry uiDescriptorRegistry, ISelectionFactory[] selectionFactories, Boolean alwaysCreateChildProperties)
at EPiServer.Shell.UI.Rest.DefaultMetadataStoreModelCreator.ExtractMetadataFromProperties(ExtendedMetadata metadata, MetadataStoreModel MetadataStoreModel, LocalizationService localizationService, UIDescriptorRegistry uiDescriptorRegistry, ISelectionFactory[] selectionFactories)
at EPiServer.Shell.UI.Rest.DefaultMetadataStoreModelCreator.CreateFromModelMetadata(ExtendedMetadata metadata, LocalizationService localizationService, UIDescriptorRegistry uiDescriptorRegistry, ISelectionFactory[] selectionFactories, Boolean alwaysCreateChildProperties)
at EPiServer.Shell.UI.Rest.DefaultMetadataStoreModelCreator.Create(ModelMetadata metadata)
at EPiServer.Shell.UI.Rest.MetadataStore.Get(String id, String modelAccessor)
at lambda_method(Closure , ControllerBase , Object[] )
at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.b__3d()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.b__3f()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.b__3f()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.b__3f()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.<>c__DisplayClass2b.b__1c()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.b__1e(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult)
at EPiServer.Shell.Services.Rest.RestControllerBase.EndExecute(IAsyncResult asyncResult)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step)
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)"
The error above mentions "DataLayerCoreStorySelectionFactory" which is one of the Selection Factories that I had deleted. Since I reverted to a previous version of the code, this Selection Factory is back in the code that I pushed to our dev instance.
Also in the log stream I am seeing such errors:
EPiServer.DataAccess.Internal.ContentDB : Content with id '933_46269' has a property with scopename '1589' but there is no entry in IPropertyDefinitionRepository with that id,
Hoping you guys have some other suggestions for me to try?
I am relatively new to EpiServer and ASP .NET but I did not consider deleting categories from the code to end up being this complicated. I come from the Wordpress corner of the web and expected this to be a walk in the park :-(
I went ahead and replaced the DB of our Dev instance with that of our Staging instance. The error no longer shows up and I am able to edit pages through the backend. I still don't understand what happened though but at least I can continue working this way.
As when you deploy code it goes through a syncing process this will be modifying the stucture of the database so there's a few things to keep in mind.
But glad it's working again
We had some categories for our pages which we deleted in the code. We are able to compile our project without errors and deploy it to our test instance. Upon restating the test instance however I am greeted with the following error message:
The DELETE statement conflicted with the REFERENCE constraint "FK_tblWorkContentProperty_tblPropertyDefinition". The conflict occurred in database "epicms", table "dbo.tblWorkContentProperty", column 'fkPropertyDefinitionID'.
Can you please help me understand what is going on here? We did not fiddle around with the database. We simply removed some categories from our code as we recently added different ones that are being used instead.
Below the error on a yellow background I have a stack trace which I was not able to decipher:
[SqlException (0x80131904): The DELETE statement conflicted with the REFERENCE constraint "FK_tblWorkContentProperty_tblPropertyDefinition". The conflict occurred in database "epicms", table "dbo.tblWorkContentProperty", column 'fkPropertyDefinitionID'.]
System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +277
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +765
System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) +4239
System.Data.SqlClient.SqlDataReader.TryHasMoreRows(Boolean& moreRows) +253
System.Data.SqlClient.SqlDataReader.TryReadInternal(Boolean setTimeout, Boolean& more) +295
System.Data.SqlClient.SqlDataReader.TryNextResult(Boolean& more) +344
System.Data.SqlClient.SqlDataReader.NextResult() +33
System.Data.ProviderBase.DataReaderContainer.NextResult() +35
System.Data.Common.DataAdapter.FillNextResult(DataReaderContainer dataReader) +61
System.Data.Common.DataAdapter.FillFromReader(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue) +253
System.Data.Common.DataAdapter.Fill(DataSet dataSet, String srcTable, IDataReader dataReader, Int32 startRecord, Int32 maxRecords) +548
System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +303
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +181
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet) +134
EPiServer.DataAccess.Internal.<>c__DisplayClass27_0.<DeleteDB>b__0() +251
EPiServer.Data.Providers.Internal.<>c__DisplayClass33_0`1.<ExecuteTransaction>b__0() +61
EPiServer.Data.Providers.SqlTransientErrorsRetryPolicy.Execute(Func`1 method) +682
EPiServer.DataAccess.Internal.ContentTypeDB.Delete(ContentType contentType) +108
EPiServer.DataAbstraction.Internal.DefaultContentTypeRepository.Delete(ContentType contentType) +53
EPiServer.DataAbstraction.RuntimeModel.Internal.ContentTypeModelRegister.CommitTypes(Boolean deleteUnusedTypes) +148
EPiServer.DataAbstraction.RuntimeModel.Internal.ContentTypeModelScanner.Sync(Boolean commitChanges) +295
EPiServer.Initialization.Internal.ModelSyncInitialization.Initialize(InitializationEngine context) +573
EPiServer.Framework.Initialization.Internal.ModuleNode.Execute(Action a, String key) +58
EPiServer.Framework.Initialization.Internal.ModuleNode.Initialize(InitializationEngine context) +123
EPiServer.Framework.Initialization.InitializationEngine.InitializeModules() +257
[InitializationException: Initialize action failed for Initialize on class EPiServer.Initialization.Internal.ModelSyncInitialization, EPiServer, Version=11.10.6.0, Culture=neutral, PublicKeyToken=8fe83dea738b45b7]
EPiServer.Framework.Initialization.InitializationEngine.InitializeModules() +786
EPiServer.Framework.Initialization.InitializationEngine.ExecuteTransition(Boolean continueTransitions) +194
EPiServer.Framework.Initialization.InitializationModule.EngineExecute(HostType hostType, Action`1 engineAction) +879
EPiServer.Framework.Initialization.InitializationModule.FrameworkInitialization(HostType hostType) +187
EPiServer.Global..ctor() +42
A1Digital.Site.EPiServerApplication..ctor() +37
ASP.global_asax..ctor() +42
[TargetInvocationException: Exception has been thrown by the target of an invocation.]
System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) +0
System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) +194
System.Activator.CreateInstance(Type type, Boolean nonPublic) +100
System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, StackCrawlMark& stackMark) +1485
System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) +298
System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture) +27
System.Web.HttpRuntime.CreateNonPublicInstance(Type type, Object[] args) +80
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +182
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +369
[HttpException (0x80004005): Exception has been thrown by the target of an invocation.]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +532
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +114
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +724