Runbook: Windows-Dienst

Dauer: ~15 Minuten
Rolle: Windows-Administrator
Voraussetzung: Admin-Rechte, .NET 8 Runtime

Data Gateway als Windows-Dienst installieren und verwalten.


Workflow

flowchart TD A[Start] --> B[Gateway kopieren] B --> C[Dienst registrieren] C --> D[Dienst konfigurieren] D --> E[Dienst starten] E --> F[Health Check] F --> G{OK?} G -->|Ja| H[Fertig] G -->|Nein| I[Event Log prüfen] style H fill:#e8f5e9 style I fill:#ffebee


1. Gateway installieren

# Verzeichnis erstellen
New-Item -ItemType Directory -Path "%SERVICES_ROOT%\DataGateway" -Force
 
# Dateien kopieren
Copy-Item -Path ".\publish\*" -Destination "%SERVICES_ROOT%\DataGateway" -Recurse
 
# Konfiguration anpassen
notepad "%SERVICES_ROOT%\DataGateway\appsettings.json"

2. Dienst mit sc.exe erstellen

# Als Administrator ausführen
sc.exe create "DataGateway" `
    binPath= "%SERVICES_ROOT%\DataGateway\WvdS.WebAPI.Data.Gateway.Api.exe" `
    DisplayName= "WvdS Data Gateway" `
    start= auto `
    obj= "NT AUTHORITY\NETWORK SERVICE"
 
# Beschreibung setzen
sc.exe description "DataGateway" "REST/OData/GraphQL API Gateway für Datenbanken"

3. Dienst mit NSSM erstellen (Alternative)

NSSM (Non-Sucking Service Manager) bietet mehr Kontrolle:

# NSSM herunterladen
Invoke-WebRequest -Uri "https://nssm.cc/release/nssm-2.24.zip" -OutFile "nssm.zip"
Expand-Archive -Path "nssm.zip" -DestinationPath "%TOOLS_PATH%"
 
# Dienst installieren
%TOOLS_PATH%\nssm-2.24\win64\nssm.exe install DataGateway "%SERVICES_ROOT%\DataGateway\WvdS.WebAPI.Data.Gateway.Api.exe"
 
# Konfiguration
nssm set DataGateway AppDirectory "%SERVICES_ROOT%\DataGateway"
nssm set DataGateway DisplayName "WvdS Data Gateway"
nssm set DataGateway Description "REST/OData/GraphQL API Gateway"
nssm set DataGateway Start SERVICE_AUTO_START
nssm set DataGateway AppStdout "%SERVICES_ROOT%\DataGateway\logs\stdout.log"
nssm set DataGateway AppStderr "%SERVICES_ROOT%\DataGateway\logs\stderr.log"
nssm set DataGateway AppRotateFiles 1
nssm set DataGateway AppRotateBytes 10485760

4. Dienst starten

# Starten
Start-Service -Name "DataGateway"
 
# Status prüfen
Get-Service -Name "DataGateway"
 
# Stoppen
Stop-Service -Name "DataGateway"
 
# Neustarten
Restart-Service -Name "DataGateway"

5. Autostart konfigurieren

# Autostart bei Systemstart
Set-Service -Name "DataGateway" -StartupType Automatic
 
# Verzögerter Start (nach Netzwerk)
sc.exe config "DataGateway" start= delayed-auto
 
# Recovery-Optionen (bei Absturz neustarten)
sc.exe failure "DataGateway" reset= 86400 actions= restart/60000/restart/60000/restart/60000

6. Health Check

# Warten bis Dienst bereit
Start-Sleep -Seconds 5
 
# Health Check
$response = Invoke-WebRequest -Uri "http://localhost:5000/health" -UseBasicParsing
if ($response.StatusCode -eq 200) {
    Write-Host "Gateway läuft!" -ForegroundColor Green
} else {
    Write-Host "Gateway-Problem!" -ForegroundColor Red
    Get-EventLog -LogName Application -Source "DataGateway" -Newest 10
}

7. Checkliste

# Prüfpunkt
———–
1 Dateien in %SERVICES_ROOT%\DataGateway
2 appsettings.json konfiguriert
3 Dienst registriert
4 Dienst gestartet
5 Health Check erfolgreich
6 Autostart aktiv
7 Recovery konfiguriert

Troubleshooting

Problem Ursache Lösung
————————–
Dienst startet nicht Fehlende .NET Runtime dotnet –info prüfen
Access denied Fehlende Rechte Als Admin installieren
Port bereits belegt Anderer Prozess netstat -ano | findstr 5000
Config error JSON-Syntax appsettings.json validieren

Event Log prüfen:

Get-EventLog -LogName Application -Source "DataGateway" -Newest 20 | Format-Table TimeGenerated, EntryType, Message -Wrap

Dienst entfernen

# Stoppen
Stop-Service -Name "DataGateway" -Force
 
# Entfernen
sc.exe delete "DataGateway"
 
# Dateien löschen (optional)
Remove-Item -Path "%SERVICES_ROOT%\DataGateway" -Recurse -Force

Verwandte Runbooks


« ← Automatisierung | → systemd »


Wolfgang van der Stille @ EMSR DATA d.o.o. - Data Gateway Professional

Zuletzt geändert: den 29.01.2026 um 15:12