chore: clean up journal migration diagnostics
This commit is contained in:
@@ -65,23 +65,27 @@ Final bewaehrte Minimal-Konfig:
|
||||
|
||||
Wichtig: Module nicht auf Vorrat laden. Jedes zusaetzliche Modul kann transitive Unity-Registrierungen erzwingen, die fuer den konkreten Webservice gar nicht benoetigt werden.
|
||||
|
||||
Problematische Module in dieser Migration:
|
||||
Module duerfen nicht auf Vorrat geladen werden. Fuer Endpunkte, die Matrix42-Services nutzen, muessen die transitiven Abhaengigkeiten aber vollstaendig als Host-Module registriert werden. Fuer den finalen `IJournalService`-Pfad wurden unter anderem folgende Module benoetigt:
|
||||
|
||||
- `Matrix42.Pandora.Persistence`
|
||||
- `Matrix42.Pandora.ServiceStore`
|
||||
- `Matrix42.Pandora.BizLogic`
|
||||
- `Matrix42.Pandora.Services`
|
||||
- `Matrix42.MsTeamsNotification.BizLogic`
|
||||
- `Matrix42.Integration.Aurora.General`
|
||||
- `Matrix42.Integration.Aurora.Search.BizLogic`
|
||||
- `Matrix42.ServiceManager.BizLogic`
|
||||
- eigenes Webservice-Assembly als Host-Modul
|
||||
|
||||
Diese Module fuehrten unter anderem zu Fehlern wie:
|
||||
Waehrend der Migration zeigten fehlende Module oder fehlende Sandbox-Host-Registrierungen unter anderem folgende Fehler:
|
||||
|
||||
```text
|
||||
IEntityDataService is an interface and cannot be constructed
|
||||
IUserProfileRepository is an interface and cannot be constructed
|
||||
IApiExplorer is an interface and cannot be constructed
|
||||
Could not load type 'System.Web.Routing.RouteTable'
|
||||
IComplianceRuleManager is an interface and cannot be constructed
|
||||
IRequestPropertiesProvider is an interface and cannot be constructed
|
||||
IExternalSearchService is an interface and cannot be constructed
|
||||
```
|
||||
|
||||
## Controller-Konstruktion
|
||||
@@ -194,13 +198,14 @@ Danach kann der vorhandene ASQL-/Helper-Code mit der `Guid` weiterarbeiten.
|
||||
|
||||
## Journal-Service
|
||||
|
||||
`IJournalService` benoetigt zusaetzliche Matrix42-Service-Module. `Matrix42.ServiceManager.BizLogic` hat in dieser Migration wieder eine transitive `IComplianceRuleManager`-Abhaengigkeit erzeugt und darf deshalb nicht pauschal geladen werden.
|
||||
`IJournalService` ist der bevorzugte Pfad fuer die Ticket-Historie. In 26.1 haengt der konkrete `JournalService` transitiv an Teams Notification, Pandora Services und Aurora Search. Diese Abhaengigkeiten muessen im Host vollstaendig geladen werden.
|
||||
|
||||
Status:
|
||||
|
||||
- Ticket-Historie ueber `IJournalService` ist mit der Minimal-Host-Konfig nicht abgesichert.
|
||||
- Fuer weitere Migrationen zuerst pruefen, ob ein kleineres Modul wie `Matrix42.ServiceManager.Services` reicht.
|
||||
- Wenn nicht, Journal-Daten alternativ ueber DataLayer/ASQL lesen oder den Endpoint bewusst ausklammern.
|
||||
- Ticket-Historie laeuft ueber `IJournalService`.
|
||||
- Der Aufruf erfolgt per Reflection gegen die zur Laufzeit geladene `GetJournalList`-Signatur, damit 26.1 Patch-Level-Unterschiede keine direkte MethodRef brechen.
|
||||
- Keine manuellen `JournalService`-Konstruktionen, Proxies, `JournalManager`-Fallbacks oder HTTP-Forwards verwenden.
|
||||
- Wenn Unity ein weiteres Interface nicht aufloesen kann, zuerst in den Matrix42-DLLs nach einem `IDependencyRegistrator` fuer genau dieses Interface suchen und das zugehoerige BizLogic-/Services-Modul laden.
|
||||
|
||||
## Typische Fehlersymptome und Ursache
|
||||
|
||||
@@ -214,7 +219,13 @@ Meistens direkte Konstruktor-Injection oder ein zu breit geladenes Host-Modul.
|
||||
Could not load type 'System.Web.Routing.RouteTable'
|
||||
```
|
||||
|
||||
Ein altes `System.Web`-/WebApi-Modul wurde in der Sandbox aktiviert. Nicht durch eigene `IApiExplorer`-Registrierung kompensieren, sondern die Ursache entfernen.
|
||||
Ein ungeeignetes altes `System.Web`-/WebApi-Modul wurde in der Sandbox aktiviert. Ursache entfernen, statt weitere Abhaengigkeiten darum herum zu laden.
|
||||
|
||||
```text
|
||||
IApiExplorer is an interface and cannot be constructed
|
||||
```
|
||||
|
||||
Der Matrix42-Sandbox-Host stellt nicht automatisch dieselbe WebApi-Explorer-Instanz wie der normale WebApi-Host bereit. Fuer den finalen Journal-Pfad registriert die Extension eine konkrete `System.Web.Http.Description.IApiExplorer`-Instanz per eigenem `IDependencyRegistrator`.
|
||||
|
||||
```json
|
||||
{"Version":"1.1","Content":{...},"StatusCode":200}
|
||||
|
||||
Reference in New Issue
Block a user