[gelöst]Dienst startet nicht mehr richtig

8. Oktober 2019 15:24

Wir haben ein seltsames Problem: Wir passen seit einigen Tagen für einen Kunden Pages an. Es ist eine 2018-Version CU8. Wir mussten heute den Dienst neu starten, und nun ist er nicht mehr sichtbar, aber er ist gestartet. Was wir bisher versucht haben ist einmal, den Dienst neu zu starten. Gleiche Fehlermeldung. Den Dienst mit einer anderen Datenbank zu starten: Funktioniert einwandfrei. Den Dienst mit der Datensicherung zu starten: Jetzt ist der Dienst zwar im DevEnv sichtbar, funktioniert aber auch nicht. Es kommt folgende Fehlermeldung im Ereignisprotokoll:

Server instance: 7090-MCBS-DEV-2018CU08
Tenant ID:
<ii>User:
Type: System.InvalidOperationException
Message: <ii>Fehler im XML-Dokument (1,63239).</ii>
StackTrace:
bei System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
bei Microsoft.Dynamics.Nav.Types.Metadata.MetaPage.CreatePageDefinition(XmlDocument pageDocument, Int32 languageAppGroupId)
bei Microsoft.Dynamics.Nav.Runtime.NCLObjectMetadataLoaderExtensions.RetrieveRuntimeObject[T](INCLObjectXmlMetadataLoader loader, ObjectType objectType, Int32 objectId, NavAppGroup appGroup, Boolean applyAppDeltas, Func`3 exceptWrapperGenerator, Func`2 objectGenerator)
bei Microsoft.Dynamics.Nav.Runtime.NCLObjectMetadataLoaderExtensions.GetMetaPage(INCLObjectXmlMetadataLoader loader, Int32 pageId, NavAppGroup appGroup, Boolean applyV1AppDeltas, Int32 languageAppGroupId)
bei Microsoft.Dynamics.Nav.Runtime.NCLMetaForm.LoadMetadata()
bei Microsoft.Dynamics.Nav.Runtime.NCLMetaApplicationObject.Populate()
bei Microsoft.Dynamics.Nav.Runtime.NCLMetadata.GetMetaApplicationObjectInternal(ApplicationObjectId appObjectId, Boolean requireCompiled, Boolean onlySearchCache, Int32 appGroupId)
bei Microsoft.Dynamics.Nav.Runtime.NCLMetadata.GetMetaApplicationObject(ApplicationObjectId appObjectId, Int32 appGroupId, Boolean requireCompiled, Boolean onlySearchCache)
bei Microsoft.Dynamics.Nav.Runtime.AssemblyGetter.GetMetadataObjectAndTimestamp(ObjectType objectType, MetaObject metaObject, List`1 radChanges, NCLMetaApplicationObject& nclMetaApplicationObject, Int64& currentTimestamp)
bei Microsoft.Dynamics.Nav.Runtime.AssemblyGetter.InitializeStaticAssembly(String assemblyBasePath, ObjectType objectType, Func`1 metaObjectFunc, Int32 assemblyBucketSize)
bei Microsoft.Dynamics.Nav.Runtime.AssemblyGetter.<>c__DisplayClass20_0.<CompileBusinessApplicationEvents>b__1(NavTenant tenant, NavSession session)
bei Microsoft.Dynamics.Nav.Runtime.NavTenant.Microsoft.Dynamics.Nav.Runtime.ITenantSessionHandler.RunTenantActionInSystemSession(Action`2 action, Boolean throwExceptions, Boolean useCurrentCulture, Boolean allowAppsDisabledMode)
bei Microsoft.Dynamics.Nav.Runtime.AssemblyGetter.CompileBusinessApplicationEvents()
Source: System.Xml
HResult: -2146233079
----------------------------------
Type: System.InvalidOperationException
Message: <ii>Instanzvalidierungsfehler: 'Record' ist kein gültiger Wert für DataType.</ii>
StackTrace:
bei Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderPageDefinition.Read79_DataType(String s)
bei Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderPageDefinition.Read81_DataFieldDefinition(Boolean isNullable, Boolean checkType)
bei Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderPageDefinition.Read97_PageDefinition(Boolean isNullable, Boolean checkType)
bei Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderPageDefinition.Read98_PageDefinition()
Source: Microsoft.GeneratedCode
HResult: -2146233079
</ii>

Ich vermute einen Fehler in einem Objekt, aber wie kann ich danach suchen?

Viele Grüße
Rainer
Zuletzt geändert von rainergaiss am 6. November 2019 16:07, insgesamt 1-mal geändert.

Re: Dienst startet nicht mehr richtig

9. Oktober 2019 08:06

Wenn es Probleme beim Starten gibt, würde ich zuerst bei den (geänderten) Rollencenterpages inkl. ihrer Subpages suchen, besonders dem Default-Rollencenter.
Die anderen Pages können zu diesem Zeitpunkt eigentlich noch kein Problem darstellen.

Re: Dienst startet nicht mehr richtig

9. Oktober 2019 08:33

Gibt es denn irgendwo eine Beschreibung, welche Objekte überhaupt schon beim Starten des Dienstes angesprochen werden? Pages dürften doch eigentlich erst beim Start des Clients bzw. Login eine Rolle spielen. Ok - ich weiß, eigentlich!

Re: Dienst startet nicht mehr richtig

9. Oktober 2019 09:44

IN deinem StackTrace steht was von "CompileBusinessApplicationEvents" und PageDefinition. Prüfe doch zuerst einmal alle Events, auf Page-Ebene.

Re: Dienst startet nicht mehr richtig

9. Oktober 2019 10:14

Ich nutze eigentlich gar keine Events, bin aber an Pages dran, die das verursachen könnten. Sind leider mehrere hundert ...

Re: Dienst startet nicht mehr richtig

9. Oktober 2019 10:52

rainergaiss hat geschrieben:... Sind leider mehrere hundert ...

:shock:

Lassen sie sich denn kompilieren?

Re: Dienst startet nicht mehr richtig

9. Oktober 2019 11:28

Testweise würde ich die Zwangskompilierung beim Start mal abschalten, geht es dann?

Re: Dienst startet nicht mehr richtig

9. Oktober 2019 11:37

Kowa hat geschrieben:...Zwangskompilierung[/url] ...

Genau danach klingt das.

Re: Dienst startet nicht mehr richtig

9. Oktober 2019 14:54

Hallo, leider nicht!

Aber euer Tipp hat zusammen mit einem Eintrag bei mibuso zu einer interessanten Geschichte geführt: Als ich bei dem ersten Auftreten des Fehlers die Pages kompiliert habe, kamen neben den wenigen Fehlern, die ich selbst gemacht (und zwischenzeitlich korrigiert) hatte, Kompilierfehler bei all den Pages, die, salopp formuliert, "nach draußen gehen", also Azure, Power BI, Videoplayer etc. Die Meldungen waren immer ähnlich, irgendwelche Key-Fehler.

Wir haben nun, weil ohnehin notwendig gewesen, die Cronus-Datenbank noch einmal installiert, und der Dienst zeigt nun auf diese Datenbank. Hier lassen sich die Pages alle einwandfrei kompilieren. Und jetzt kommt der Hit. In der fehlerhaften Datenbank ist immer noch dieser Dienst, der jetzt auf die Cronus-Datenbank zeigt, eingetragen. Und plötzlich lassen sich nicht nur auch hier die Pages fehlerfrei kompilieren, wir können den Client auch wieder starten. Das Problem lässt sich also anscheinend lösen, wenn wir die Stelle finden, wo die "falschen" Einträge stehen. Registry oder XML-Datei? Ich weiß es nicht. :oops:

Es wäre toll, wenn es jemand von euch wüsste.

Gruß Rainer

Re: Dienst startet nicht mehr richtig

22. Oktober 2019 11:42

Das Problem hat sich jetzt verlagert. Ich habe die Demo-Datenbank hergenommen und habe nur die geänderten Tabellen und Codeunits neu hinzugefügt. Wenn ich jetzt den Dienst starten möchte, dann steht im Ereignis-Protokoll die folgende Meldung:
-------------------------------------------------------
Server instance: 7090-MCBS-DEV-2018CU08
Category: Extensions
ClientSessionId: 00000000-0000-0000-0000-000000000000
ClientActivityId: 00000000-0000-0000-0000-000000000000
ServerSessionUniqueId: 00000000-0000-0000-0000-000000000000
ServerActivityId: 00000000-0000-0000-0000-000000000000
EventTime: 10/22/2019 08:43:53
Message (NavNotSupportedException): Exception: NavNotSupportedException
Eine Ausnahme vom Typ "Microsoft.Dynamics.Nav.Types.Exceptions.NavNotSupportedException" wurde ausgelöst.
ExceptionStackTrace:
bei Microsoft.Dynamics.Nav.Runtime.NCLMetaQuery.<>c__DisplayClass51_0.<CreateSubQueryForFlowFieldCalculation>b__1(NCLMetaQueryDefinition subQueryBeingCreated)
bei Microsoft.Dynamics.Nav.Runtime.NCLMetaQueryDefinition..ctor(NCLMetaQueryDataItem parentDataItem, Int32 topRows, Func`2 dataItemsCreator, Func`2 orderBysCreator)
bei Microsoft.Dynamics.Nav.Runtime.NCLMetaQuery.<>c__DisplayClass51_0.<CreateSubQueryForFlowFieldCalculation>b__0(NCLMetaQueryDataItem dataItemBeingCreated)
bei Microsoft.Dynamics.Nav.Runtime.NCLMetaQueryDataItem..ctor(NCLMetaQueryDefinition parentQueryDefinition, DataItemLinkType dataItemLinkType, Func`2 subQueryCreator, String name, Func`2 queryColumnsCreator, Func`2 dataItemLinksCreator, Int32 appGroup)
bei Microsoft.Dynamics.Nav.Runtime.NCLMetaQuery.CreateSubQueryForFlowFieldCalculation(NCLMetaQueryDataItem baseDataItem, MetaQueryColumn flowFieldColumn, Int32 nextColumnId)
bei Microsoft.Dynamics.Nav.Runtime.NCLMetaQuery.CreateDataItemsFromDesignMetadata(NCLMetaQueryDefinition parentQueryDefinition, MetaQuery metaQuery, Boolean allowExpressionEvaluation, Boolean& tableFilterHasVariables)
bei Microsoft.Dynamics.Nav.Runtime.NCLMetaQuery.<>c__DisplayClass54_1.<ParseMetadata>b__0(NCLMetaQueryDefinition queryDefinitionBeingCreated)
bei Microsoft.Dynamics.Nav.Runtime.NCLMetaQueryDefinition..ctor(NCLMetaQueryDataItem parentDataItem, Int32 topRows, Func`2 dataItemsCreator, Func`2 orderBysCreator)
bei Microsoft.Dynamics.Nav.Runtime.NCLMetaQuery.ParseMetadata(MetaQuery metaQuery, Boolean allowExpressionEvaluation)
bei Microsoft.Dynamics.Nav.Runtime.NCLMetaQuery.LoadMetadata()
bei Microsoft.Dynamics.Nav.Runtime.NCLMetaApplicationObject.Populate()
bei Microsoft.Dynamics.Nav.Runtime.NCLMetadata.InitializeAppGroupNewObject(NavAppGroup appGroup, NavAppGroupObjectMetadataSummary newObjectSummary)
bei Microsoft.Dynamics.Nav.Runtime.NCLMetadata.InitializeNewAppQueries(NavAppGroup appGroup, PerformanceLog perfLog, IReadOnlyList`1 newObjectsFromApps)
bei Microsoft.Dynamics.Nav.Runtime.NCLMetadata.InitializeAppGroup(NavAppGroup appGroup)
CallerStackTrace:
bei Microsoft.Dynamics.Nav.Diagnostic.NavDiagnostics.ComposeAndSendExceptionTraceTag(String tag, Category category, Exception exception, DiagnosticParameter parameter, Verbosity verbosity, Guid clientSessionId, Guid clientActivityId, Boolean forceLog)
bei Microsoft.Dynamics.Nav.Diagnostic.NavDiagnostics.SendExceptionTag(String tag, Category category, Exception exception, Verbosity verbosity, DiagnosticParameter message, Boolean forceLog)
bei Microsoft.Dynamics.Nav.Runtime.NCLMetadata.InitializeAppGroup(NavAppGroup appGroup)
bei Microsoft.Dynamics.Nav.Runtime.NCLMetadata.InitializeAppGroup(NavAppGroup appGroup)
bei Microsoft.Dynamics.Nav.Runtime.NCLMetadata.InitializeAppGroups(NavAppGroups appGroups)
bei Microsoft.Dynamics.Nav.Runtime.Apps.NavAppGroupUpdater.UpdateGroupForChangedTenant(NavTenant tenant)
bei Microsoft.Dynamics.Nav.Runtime.NavTenantCollection.InitializeAppsForTenant(NavTenant tenant)
bei Microsoft.Dynamics.Nav.Runtime.NavTenantCollection.InitializeTenant(NavTenant tenant, NavTenantSettings tenantSettings, Boolean overwriteTenantIdInDatabase, Boolean verifyDatabaseConnection, Boolean ensureDatabaseExclusiveState)
bei Microsoft.Dynamics.Nav.Runtime.NavTenantCollection.AddTenant(NavTenantMountingParameters mountingParameters)
bei Microsoft.Dynamics.Nav.Runtime.NavTenantCollection.MountDefaultTenant(String databaseServerName, String databaseName, String databaseUserName, ProtectedDatabasePassword databasePassword, EncryptionProvider encryptionProvider, AzureKeyVaultSettings azureKeyVaultSettings, Boolean verifyServerInstanceKey)
bei Microsoft.Dynamics.Nav.Runtime.NavTenantCollection.AddSingleLegacyTenant(String databaseServerName, String databaseName, String databaseUserName, ProtectedDatabasePassword databasePassword, EncryptionProvider encryptionProvider, AzureKeyVaultSettings azureKeyVaultSettings)
bei Microsoft.Dynamics.Nav.Runtime.NavTenantCollection.ConfigureTenants(ServerUserSettings settings, String encryptionKey)
bei Microsoft.Dynamics.Nav.Runtime.NavTaskFactory.<>c__DisplayClass11_0.<StartNewTask>b__0()
bei System.Threading.Tasks.Task.Execute()
bei System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
bei System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot)
bei System.Threading.Tasks.Task.ExecuteEntry(Boolean bPreventDoubleExecution)
bei System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
bei System.Threading.ThreadHelper.ThreadStart(Object obj)


ProcessId: 4032
Tag: 000009W
ThreadId: 12
CounterInformation:
----------------------------------------

Hat jemand eine Idee, was die Ursache sein könnte? Das Problem ist wahrscheinlich weniger, das fehlerhafte Objekt zu finden als die Zeit, die dazu nötig ist, wenn man keinen Anhaltspunkt hat, wo man suchen kann. :-( :-? :-x

Re: Dienst startet nicht mehr richtig

22. Oktober 2019 14:32

Ist das Platform Build auch wirklich auf CU 08?
In CU 04 erschien für diesen Fehler ein Hotfix ID 257376.
https://support.microsoft.com/en-us/hel ... uild-21441

Re: Dienst startet nicht mehr richtig

22. Oktober 2019 14:55

Hallo Kai,

der Build wird im Dev.-Env. und Dienst als 23572 angezeigt.

Gruß Rainer

Re: Dienst startet nicht mehr richtig

22. Oktober 2019 14:58

Hallo Kai,

der Build wird im Dev.-Env. und Dienst als 23572 angezeigt. Die Meldung kommt aber auch nicht beim Einlesen einer fob-File sondern beim Starten des Dienstes.

Gruß Rainer

Re: Dienst startet nicht mehr richtig

6. November 2019 16:05

Die Lösung ist, dass eine Formel im Hide-Property einer Page falsch interpretiert wurde (Beispiel: not a and not b).

Re: [gelöst]Dienst startet nicht mehr richtig

6. November 2019 16:53

Ach du meine Güte. Wie habt ihr es heraus gefunden?

Re: [gelöst]Dienst startet nicht mehr richtig

6. November 2019 17:27

Zunächst mit einer Cronus-Datenbank.
Dienst gestartet --> ok
Dann die geänderten Tabellen eingespielt (jeweils Dienst neu gestartet) --> ok
Die zusätzlichen Tabellen eingespielt --> ok
Die zusätzlichen Codeunits eingespielt --> ok
Die geänderten Standard-Codeunits eingespielt --> ok
Die zusätzlichen Pages eingespielt --> ok
Die geänderten Standard-Pages einespielt --> Fehler
Die Standard-Pages im Original zurückgeholt --> ok
Die geänderten Standard-Pages immer päckchenweise eingespielt bis wir den Übeltäter gefunden hatten.
Dann mit Beyond Compare die Änderungen in Textform identifiziert und dann hatten wir ganz schnell die faule Stelle, da er in der Textauflösung schon einen Fehler hatte.

War 'ne Menge Arbeit bei mehreren hundert geänderten Objekten. Eine vernünftige Fehlermeldung wäre hilfreich gewesen :oops: