From 1b898a1efe605dd3e03b8557b9230f6f3096d702 Mon Sep 17 00:00:00 2001 From: metacube Date: Wed, 20 May 2026 08:35:31 +0200 Subject: [PATCH] Document IIS deployment diagnostics --- TrafagSalesExporter/HANDOFF_2026-04-15.md | 13 +++ TrafagSalesExporter/NEXT_STEPS_2026-04-15.md | 50 ++++++++- .../docs/DEPLOYMENT_IIS_HANDOFF_2026-05-19.md | 101 +++++++++++++++++- 3 files changed, 160 insertions(+), 4 deletions(-) diff --git a/TrafagSalesExporter/HANDOFF_2026-04-15.md b/TrafagSalesExporter/HANDOFF_2026-04-15.md index 7c8f471..6dfbde3 100644 --- a/TrafagSalesExporter/HANDOFF_2026-04-15.md +++ b/TrafagSalesExporter/HANDOFF_2026-04-15.md @@ -650,6 +650,19 @@ IIS-/IT-Hinweise: 4. AD-Gruppen fuer Benutzer und Admins anlegen oder bestehende Gruppen eintragen 5. `Security:AccessGroups` und `Security:AdminGroups` in produktiver Konfiguration korrekt setzen +Aktueller IIS-Deployment-Nachtrag 2026-05-20: + +- Vollstaendige Detaildoku: `docs/DEPLOYMENT_IIS_HANDOFF_2026-05-19.md` +- Fuehrendes Projekt bleibt `TrafagSalesExporter`. +- Publish-Ausgabe heisst fuer IIS weiterhin `BiDashboard.dll`, ohne EXE/AppHost. +- Publish-Ziel: `\\trch-webapp-bidashboard.trafagch.local\BiDashboard$\` +- Browser-URL: `https://trch-webapp-bidashboard.trafagch.local/BiDashboard/` +- `diag.txt` unter `/BiDashboard/diag.txt` ist erreichbar und beweist, dass IIS auf den richtigen Publish-Ordner zeigt. +- Der verbleibende `500` entsteht beim ASP.NET-Core-Start oder im ASP.NET-Core-IIS-Modul. +- `web.config` steht aktuell auf `hostingModel="outofprocess"`, `stdoutLogEnabled="true"` und `ASPNETCORE_DETAILEDERRORS=true`. +- Wenn `logs` leer bleibt, muss der Serveradmin im Event Viewer pruefen: `IIS AspNetCore Module V2`, `.NET Runtime`, `Application Error`. +- Server muss kein Microsoft Excel installiert haben; XLSX wird ueber ClosedXML/OpenXML gelesen. + Verifikation: ```text diff --git a/TrafagSalesExporter/NEXT_STEPS_2026-04-15.md b/TrafagSalesExporter/NEXT_STEPS_2026-04-15.md index 85164a7..1118d80 100644 --- a/TrafagSalesExporter/NEXT_STEPS_2026-04-15.md +++ b/TrafagSalesExporter/NEXT_STEPS_2026-04-15.md @@ -1,6 +1,54 @@ # Next Steps -Stand: 2026-05-19 +Stand: 2026-05-20 + +## Nachtrag 2026-05-20 IIS 500 aktueller Stand + +Vollstaendige Doku: + +```text +docs/DEPLOYMENT_IIS_HANDOFF_2026-05-19.md +``` + +Was sicher bewiesen ist: + +- `https://trch-webapp-bidashboard.trafagch.local/BiDashboard/diag.txt` ist erreichbar. +- Browser zeigt dort: + +```text +BiDashboard publish folder reached 2026-05-20T08:19:14.2667783+02:00 +``` + +- Damit stimmt IIS-URL `/BiDashboard` und der Physical Path zum Publish-Ordner. +- Der verbleibende `500` ist kein falscher Pfad und kein HTTP/HTTPS-Verwechslungsproblem. + +Was umgesetzt wurde: + +- Publish weiterhin aus `TrafagSalesExporter`. +- Ausgabe weiterhin `BiDashboard.dll`, keine EXE. +- `web.config` auf `hostingModel="outofprocess"` umgestellt. +- `stdoutLogEnabled="true"` bleibt aktiv. +- `ASPNETCORE_DETAILEDERRORS=true` fuer Diagnose gesetzt. +- Neu publiziert auf `\\trch-webapp-bidashboard.trafagch.local\BiDashboard$\`. + +Offen fuer Server-Spezialist: + +- .NET 8 Hosting Bundle / AspNetCoreModuleV2 pruefen. +- App Pool pruefen: + - `.NET CLR Version = No Managed Code` + - `Managed Pipeline Mode = Integrated` + - `Enable 32-bit Applications = False` +- Event Viewer lesen: + - `IIS AspNetCore Module V2` + - `.NET Runtime` + - `Application Error` +- App-Pool-Identity mit `Modify` auf Publish-Ordner, `logs` und `trafag_exporter.db*` bestaetigen. + +Wichtig: + +- Der Server braucht kein installiertes Microsoft Excel. +- XLSX wird ueber ClosedXML/OpenXML gelesen. +- CSV-Umstellung ist fuer diesen 500-Fehler nicht noetig. ## Nachtrag 2026-05-20 IT Finance-Methode diff --git a/TrafagSalesExporter/docs/DEPLOYMENT_IIS_HANDOFF_2026-05-19.md b/TrafagSalesExporter/docs/DEPLOYMENT_IIS_HANDOFF_2026-05-19.md index d03c0f7..4f3ddc3 100644 --- a/TrafagSalesExporter/docs/DEPLOYMENT_IIS_HANDOFF_2026-05-19.md +++ b/TrafagSalesExporter/docs/DEPLOYMENT_IIS_HANDOFF_2026-05-19.md @@ -1,5 +1,7 @@ # Deployment / IIS Handoff 2026-05-19 +Letzter Nachtrag: 2026-05-20 + ## Ziel `TrafagSalesExporter` bleibt das fuehrende Projekt, wird aber fuer den Server als ASP.NET/IIS-Webanwendung im bisherigen `BiDashboard`-Schema veroeffentlicht. @@ -63,6 +65,8 @@ f128d35 Publish web app without apphost e9b616f Align Trafag publish output with BiDashboard 1533570 Exclude local build artifacts from web publish 5087a7c Enable IIS publish diagnostics +e3b9d8d Switch IIS hosting to out-of-process +1dc336d Enable IIS detailed startup diagnostics ``` ## Veroeffentlichen @@ -89,7 +93,11 @@ Im Repo liegt eine explizite `web.config`, damit IIS/ANCM Diagnoseinformationen arguments=".\BiDashboard.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" - hostingModel="inprocess" /> + hostingModel="outofprocess"> + + + + ``` Der Ordner `logs` wurde auf dem Share angelegt: @@ -102,7 +110,62 @@ Nach einem Browser-Reload mit `500` war der Ordner weiterhin leer. Das deutet au - App-Pool darf nicht in `logs` schreiben. - Fehler passiert auf IIS/ANCM-Ebene vor dem App-Start. -- IIS verwendet einen anderen Physical Path als den Share-Ordner. +- fehlendes oder defektes .NET 8 Hosting Bundle / AspNetCoreModuleV2. + +## Nachtrag 2026-05-20: aktueller 500-Befund + +Geprueft: + +- `diag.txt` wurde direkt in den Publish-Ordner geschrieben: + +```text +\\trch-webapp-bidashboard.trafagch.local\BiDashboard$\diag.txt +``` + +- Browser-Test: + +```text +https://trch-webapp-bidashboard.trafagch.local/BiDashboard/diag.txt +``` + +- Ergebnis im Browser: + +```text +BiDashboard publish folder reached 2026-05-20T08:19:14.2667783+02:00 +``` + +Schlussfolgerung: + +- IIS-URL `/BiDashboard` zeigt auf den richtigen Publish-Ordner. +- Binding/virtueller Pfad/Physical Path sind fuer statische Dateien korrekt. +- Der `500` kommt nicht mehr von einer falschen URL. +- Der Fehler entsteht beim ASP.NET-Core-App-Start oder im ASP.NET-Core-IIS-Modul. + +Zusaetzlich geprueft: + +- `BiDashboard.dll` konnte aus dem Publish-Ordner per `dotnet .\BiDashboard.dll` gestartet werden und brach nicht sofort mit einer Exception ab. +- Dabei blieb ein lokaler Testprozess `dotnet` kurz aktiv und sperrte `BiDashboard.dll`; Prozess wurde beendet und danach erfolgreich neu publiziert. +- Nach erneutem Browser-Aufruf blieb `logs` weiterhin leer. +- HTTPS-Test von der Entwickler-Maschine per `curl` scheitert vor HTTP wegen Schannel/Client-Credentials: + +```text +SEC_E_NO_CREDENTIALS (0x8009030e) +``` + +Diese lokale `curl`-Einschraenkung ist nicht der IIS-500-Fehler im Browser. + +Aktueller Verdacht in Prioritaet: + +1. .NET 8 Hosting Bundle / AspNetCoreModuleV2 fehlt oder ist nicht korrekt installiert. +2. App Pool ist nicht passend fuer ASP.NET Core eingestellt. +3. App-Pool-Identity hat noch nicht alle noetigen Rechte fuer Start, SQLite oder Logs. +4. Details stehen nur im Windows Event Viewer, weil stdout nicht erzeugt wird. + +Wichtig: + +- Der Server braucht kein installiertes Microsoft Excel. +- XLSX wird ueber ClosedXML/OpenXML gelesen und geschrieben. +- Eine Umstellung auf CSV ist fuer dieses Deployment-Problem nicht noetig. ## Rechtebefund @@ -127,6 +190,12 @@ Zugriff verweigert Auch per SID fuer `IIS_IUSRS` wurde es abgelehnt. Wir koennen publishen und Dateien schreiben, aber keine NTFS-/Share-Rechte auf dem Server aendern. +Spaeterer Befund: + +- Auf Publish-Ordner und `logs` war eine konkrete App-Pool-SID mit `Modify` sichtbar. +- `IIS_IUSRS` hatte weiterhin nur `ReadAndExecute`. +- Trotz dieser sichtbaren App-Pool-SID blieben stdout-Logs leer; daher reicht der ACL-Befund allein nicht zur Erklaerung. + ## Wahrscheinlichster aktueller Fehler Die App startet in `Program.cs` sofort die Datenbankinitialisierung: @@ -147,7 +216,7 @@ trafag_exporter.db-shm trafag_exporter.db-wal ``` -Wenn der App-Pool nur Lesen/Ausfuehren hat, kann das beim Start als `500` enden. +Wenn der App-Pool nur Lesen/Ausfuehren hat, kann das beim Start als `500` enden. Da spaeter aber eine konkrete App-Pool-SID mit `Modify` sichtbar war, muessen zusaetzlich .NET Hosting Bundle, App-Pool-Konfiguration und Event Viewer geprueft werden. ## Server-Spezialist: konkrete Bitte @@ -197,6 +266,32 @@ Application Error .NET Runtime ``` +## Kurzmeldung an Server-Spezialist + +```text +diag.txt unter https://trch-webapp-bidashboard.trafagch.local/BiDashboard/diag.txt ist erreichbar. +Der IIS-Pfad stimmt also. + +Die App selbst liefert weiterhin 500, und \\...\BiDashboard$\logs bleibt leer, obwohl stdoutLogEnabled=true gesetzt ist. +Die App ist als .NET 8 ASP.NET-Core-App publiziert, ohne EXE/AppHost, Start via: +dotnet .\BiDashboard.dll + +Bitte am Server pruefen: +1. .NET 8 Hosting Bundle installiert/repariert? +2. AspNetCoreModuleV2 im IIS vorhanden? +3. App Pool: + - .NET CLR Version = No Managed Code + - Managed Pipeline Mode = Integrated + - Enable 32-bit Applications = False +4. Event Viewer > Windows Logs > Application: + - IIS AspNetCore Module V2 + - .NET Runtime + - Application Error +5. App-Pool-Identity hat Modify auf Publish-Ordner, logs und trafag_exporter.db* + +Microsoft Excel muss nicht installiert sein; XLSX wird ueber ClosedXML/OpenXML gelesen. +``` + ## Aktueller Restzustand im Git-Working-Tree Es gibt weiterhin alte/unabhaengige lokale Dateien und geloeschte Alt-Dokumente im Working Tree. Diese wurden bewusst nicht committed: