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

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