Anwendungseinstellungen – Referenz
RAMP wird über appsettings.json-Dateien im Verzeichnis src/RAMP.API/ konfiguriert. Die Konfiguration folgt den ASP.NET Core-Konventionen mit umgebungsspezifischen Überschreibungen.
Konfigurationsdateien
Abschnitt betitelt „Konfigurationsdateien“| Datei | Zweck |
|---|---|
appsettings.json | Basiskonfiguration (wird immer geladen) |
appsettings.Development.json | Entwicklungsüberschreibungen |
appsettings.Production.json | Produktionsüberschreibungen |
appsettings.Docker.json | Docker-Deployment-Überschreibungen |
Die Basiseinstellungen werden zuerst geladen, dann überschreiben umgebungsspezifische Dateien die übereinstimmenden Schlüssel. Spätere Dateien haben Vorrang.
Überschreibungen durch Umgebungsvariablen
Abschnitt betitelt „Überschreibungen durch Umgebungsvariablen“Alle Einstellungen können über Umgebungsvariablen mit dem Präfix RAMP_ überschrieben werden:
RAMP_Database__Provider=SqliteRAMP_Jwt__Secret=MyProductionSecret123456789012345RAMP_Cache__Provider=RedisVerwenden Sie doppelte Unterstriche (__) zur Trennung verschachtelter Schlüssel.
Datenbank
Abschnitt betitelt „Datenbank“Konfiguriert den Datenbankanbieter und die Verbindung.
{ "Database": { "Provider": "SqlServer", "ConnectionString": "Server=localhost,1433;Database=RAMP;User Id=sa;Password=YourPassword;TrustServerCertificate=True", "AutoMigrate": true, "RequireUpToDateSchema": false, "RequireUpToDateTranslations": false }}| Eigenschaft | Typ | Standard | Beschreibung |
|---|---|---|---|
Provider | enum | SqlServer | Datenbankanbieter: SqlServer, Sqlite, PostgreSQL, MySQL |
ConnectionString | string | (leer) | Datenbankverbindungszeichenfolge. Greift auf ConnectionStrings:DefaultConnection zurück, wenn leer. |
AutoMigrate | bool | true | Entity Framework Core-Migrationen beim Start automatisch anwenden. In der Produktion auf false setzen für kontrollierte Migrations-Deployments. |
RequireUpToDateSchema | bool | false | Wenn true und ausstehende Migrationen vorhanden sind, schlägt der API-Start fehl. Nützlich zum Erkennen vergessener Migrationen in CI/CD. |
RequireUpToDateTranslations | bool | false | Wenn true und integrierte Übersetzungen veraltet sind, schlägt der API-Start fehl. |
Anbieterspezifische Verbindungszeichenfolgen
Abschnitt betitelt „Anbieterspezifische Verbindungszeichenfolgen“Server=hostname,1433;Database=RAMP;User Id=sa;Password=YourPassword;TrustServerCertificate=TrueData Source=ramp.dbEmpfohlen für Entwicklung und kleine Deployments.
Host=localhost;Port=5432;Database=RAMP;Username=ramp;Password=YourPasswordServer=localhost;Port=3306;Database=RAMP;User=ramp;Password=YourPasswordLegacy-Verbindungszeichenfolgen
Abschnitt betitelt „Legacy-Verbindungszeichenfolgen“Zur Abwärtskompatibilität prüft RAMP auch den Standard-Abschnitt ConnectionStrings:
{ "ConnectionStrings": { "DefaultConnection": "Server=localhost,1433;Database=RAMP;..." }}Wenn Database:ConnectionString leer ist, greift RAMP auf ConnectionStrings:DefaultConnection zurück.
JWT-Authentifizierung
Abschnitt betitelt „JWT-Authentifizierung“Konfiguriert die JSON Web Token-Authentifizierung für den API-Zugriff.
{ "Jwt": { "Secret": "YourSuperSecretKeyThatIsAtLeast32CharactersLong!", "Issuer": "RAMP.API", "Audience": "RAMP.Web", "ExpiryHours": 8 }}| Eigenschaft | Typ | Standard | Beschreibung |
|---|---|---|---|
Secret | string | (siehe Standard) | HMAC-SHA256-Signaturschlüssel. Mindestens 32 Zeichen. Muss in der Produktion geändert werden. |
Issuer | string | RAMP.API | JWT-Token-Aussteller-Claim |
Audience | string | RAMP.Web | JWT-Token-Zielgruppen-Claim |
ExpiryHours | int | 8 | JWT-Token-Gültigkeitsdauer in Stunden |
Dateispeicher
Abschnitt betitelt „Dateispeicher“Konfiguriert den Speicherort für hochgeladene Dateien (Anhänge, Nachweise).
{ "FileStorage": { "Provider": "Local", "Local": { "Path": "uploads" }, "MinIO": { "Endpoint": "localhost:9000", "AccessKey": "admin", "SecretKey": "minio_password", "BucketName": "ramp-uploads", "UseSSL": false, "Region": "us-east-1" }, "AzureBlob": { "ConnectionString": "", "ContainerName": "ramp-uploads" }, "S3": { "AccessKey": "", "SecretKey": "", "BucketName": "ramp-uploads", "Region": "us-east-1", "ServiceUrl": "" } }}Anbieteroptionen
Abschnitt betitelt „Anbieteroptionen“| Anbieter | Beschreibung | Geeignet für |
|---|---|---|
Local | Dateien im lokalen Dateisystem gespeichert | Entwicklung, Single-Server-Deployments |
MinIO | S3-kompatibler Objektspeicher | Docker-Deployments, selbst gehostete Cluster |
AzureBlob | Azure Blob Storage | Azure-Cloud-Deployments |
S3 | Amazon S3 oder S3-kompatible Dienste | AWS-Deployments, S3-kompatibler Speicher |
Lokaler Speicher
Abschnitt betitelt „Lokaler Speicher“| Eigenschaft | Typ | Standard | Beschreibung |
|---|---|---|---|
Path | string | uploads | Verzeichnispfad für die Dateispeicherung. Relativ zum API-Arbeitsverzeichnis. |
MinIO-Speicher
Abschnitt betitelt „MinIO-Speicher“| Eigenschaft | Typ | Standard | Beschreibung |
|---|---|---|---|
Endpoint | string | localhost:9000 | MinIO-Server-Endpunkt (Host:Port) |
AccessKey | string | (leer) | MinIO-Zugriffsschlüssel |
SecretKey | string | (leer) | MinIO-Geheimschlüssel |
BucketName | string | ramp-uploads | Name des Speicher-Buckets |
UseSSL | bool | false | HTTPS für MinIO-Verbindungen verwenden |
Region | string | us-east-1 | MinIO-Region |
Azure Blob Storage
Abschnitt betitelt „Azure Blob Storage“| Eigenschaft | Typ | Standard | Beschreibung |
|---|---|---|---|
ConnectionString | string | (leer) | Azure Storage-Verbindungszeichenfolge |
ContainerName | string | ramp-uploads | Blob-Containername |
S3-Speicher
Abschnitt betitelt „S3-Speicher“| Eigenschaft | Typ | Standard | Beschreibung |
|---|---|---|---|
AccessKey | string | (leer) | AWS-Zugriffsschlüssel-ID |
SecretKey | string | (leer) | Geheimer AWS-Zugriffsschlüssel |
BucketName | string | ramp-uploads | S3-Bucket-Name |
Region | string | us-east-1 | AWS-Region |
ServiceUrl | string | (leer) | Benutzerdefinierter Endpunkt für S3-kompatible Dienste |
Konfiguriert den Caching-Anbieter für Anwendungsdaten und Token-Blacklisting.
{ "Cache": { "Provider": "InMemory", "InMemory": { "SizeLimit": 100000000, "ExpirationScanFrequency": 60 }, "Redis": { "ConnectionString": "localhost:6379", "InstanceName": "RAMP:", "Database": 0, "AbortOnConnectFail": false, "ConnectTimeout": 5000, "SyncTimeout": 5000 } }}Anbieteroptionen
Abschnitt betitelt „Anbieteroptionen“| Anbieter | Beschreibung | Geeignet für |
|---|---|---|
InMemory | In-Process-Speicher-Cache | Single-Server-Deployments, Entwicklung |
Redis | Verteilter Redis-Cache | Multi-Server-Deployments, Produktion |
InMemory-Optionen
Abschnitt betitelt „InMemory-Optionen“| Eigenschaft | Typ | Standard | Beschreibung |
|---|---|---|---|
SizeLimit | long | 100000000 | Maximale Cache-Größe in Bytes (100 MB) |
ExpirationScanFrequency | int | 60 | Wie oft nach abgelaufenen Einträgen gesucht wird (Sekunden) |
Redis-Optionen
Abschnitt betitelt „Redis-Optionen“| Eigenschaft | Typ | Standard | Beschreibung |
|---|---|---|---|
ConnectionString | string | localhost:6379 | Redis-Server-Verbindungszeichenfolge |
InstanceName | string | RAMP: | Schlüsselpräfix für Cache-Einträge |
Database | int | 0 | Redis-Datenbanknummer (0–15) |
AbortOnConnectFail | bool | false | Ausnahme auslösen, wenn die Erstverbindung fehlschlägt. Auf false setzen für Resilienz. |
ConnectTimeout | int | 5000 | Verbindungs-Timeout in Millisekunden |
SyncTimeout | int | 5000 | Timeout für synchrone Operationen in Millisekunden |
SignalR (Echtzeit-Updates)
Abschnitt betitelt „SignalR (Echtzeit-Updates)“Konfiguriert SignalR für Echtzeit-Browser-Benachrichtigungen und Kollaborationsfunktionen.
{ "SignalR": { "UseRedisBackplane": false, "Redis": { "ConnectionString": "localhost:6379", "ChannelPrefix": "RAMP:SignalR:", "ConnectTimeout": 5000, "SyncTimeout": 5000 } }}| Eigenschaft | Typ | Standard | Beschreibung |
|---|---|---|---|
UseRedisBackplane | bool | false | Redis-Backplane für Multi-Server-SignalR aktivieren. Erforderlich für Load-Balanced-Deployments. |
Redis-Backplane-Optionen
Abschnitt betitelt „Redis-Backplane-Optionen“| Eigenschaft | Typ | Standard | Beschreibung |
|---|---|---|---|
ConnectionString | string | localhost:6379 | Redis-Server für das SignalR-Backplane |
ChannelPrefix | string | RAMP:SignalR: | Redis-Kanalpräfix für SignalR-Nachrichten |
ConnectTimeout | int | 5000 | Verbindungs-Timeout in Millisekunden |
SyncTimeout | int | 5000 | Timeout für synchrone Operationen in Millisekunden |
Fest kodierte SignalR-Einstellungen
Abschnitt betitelt „Fest kodierte SignalR-Einstellungen“Diese Werte sind im Code konfiguriert und können nicht über die Konfiguration geändert werden:
| Einstellung | Wert | Beschreibung |
|---|---|---|
| KeepAliveInterval | 15 Sekunden | Intervall zwischen Keep-Alive-Pings |
| ClientTimeoutInterval | 30 Sekunden | Client gilt nach dieser Zeit als getrennt |
| HandshakeTimeout | 15 Sekunden | Maximale Zeit für den initialen Handshake |
| MaximumReceiveMessageSize | 32 KB | Maximale Größe eingehender Nachrichten |
| EnableDetailedErrors | Nur Entwicklung | Detaillierte Fehlermeldungen in der Entwicklung |
E-Mail-Einstellungen
Abschnitt betitelt „E-Mail-Einstellungen“Konfiguriert SMTP für E-Mail-Benachrichtigungen (Passwort-Zurücksetzen, Eskalationen, Zusammenfassungen).
{ "EmailSettings": { "SmtpHost": "localhost", "SmtpPort": 25, "UseSsl": false, "Username": null, "Password": null, "FromAddress": "noreply@ramp.local", "FromName": "RAMP Notifications" }}| Eigenschaft | Typ | Standard | Beschreibung |
|---|---|---|---|
SmtpHost | string | localhost | SMTP-Server-Hostname |
SmtpPort | int | 25 | SMTP-Server-Port (25, 587 oder 465) |
UseSsl | bool | false | SSL/TLS für SMTP-Verbindungen aktivieren. true verwenden mit Port 587 (STARTTLS) oder 465 (Implicit TLS). |
Username | string | null | SMTP-Authentifizierungs-Benutzername (optional) |
Password | string | null | SMTP-Authentifizierungs-Passwort (optional) |
FromAddress | string | noreply@ramp.local | Absender-E-Mail-Adresse |
FromName | string | RAMP Notifications | Anzeigename des Absenders |
Mandantenfähigkeit
Abschnitt betitelt „Mandantenfähigkeit“Konfiguriert die Unterstützung für Mandantenfähigkeit. Wenn deaktiviert, betreibt RAMP als Single-Mandant-Installation.
{ "MultiTenant": { "Enabled": false, "ResolutionStrategy": "Cookie", "FallbackStrategy": "None", "AllowDomain": false, "AllowPath": false, "AllowDatabasePerTenant": false, "DomainPattern": "{tenant}.localhost", "PathPrefix": "/tenant", "DefaultTenantSlug": "default", "RequireTenant": false }}| Eigenschaft | Typ | Standard | Beschreibung |
|---|---|---|---|
Enabled | bool | false | Mandantenfähigkeit aktivieren. Bei false betreibt RAMP als Single-Mandant. |
ResolutionStrategy | enum | Cookie | Primäre Mandanten-Auflösungsmethode: Cookie, DomainSlug, Header |
FallbackStrategy | enum | None | Fallback-Auflösung, wenn die primäre fehlschlägt: Cookie, DomainSlug, Header, None |
AllowDomain | bool | false | Domain-basierte Mandantenauflösung erlauben (z. B. acme.ramp.example.com) |
AllowPath | bool | false | Pfad-basierte Mandantenauflösung erlauben (z. B. /tenant/acme/) |
AllowDatabasePerTenant | bool | false | Separate Datenbanken pro Mandant erlauben (erweitert) |
DomainPattern | string | {tenant}.localhost | Domain-Muster für die domain-basierte Auflösung. {tenant} wird durch den Mandanten-Slug ersetzt. |
PathPrefix | string | /tenant | Pfadpräfix für die pfad-basierte Auflösung |
DefaultTenantSlug | string | default | Standard-Mandanten-Slug, wenn kein Mandant aufgelöst wird |
RequireTenant | bool | false | Wenn true, werden Anfragen ohne aufgelösten Mandanten abgelehnt |
Auflösungsstrategien
Abschnitt betitelt „Auflösungsstrategien“| Strategie | Funktionsweise | Anwendungsfall |
|---|---|---|
Cookie | Mandant wird nach dem Login in einem Browser-Cookie gespeichert | Standard. Funktioniert mit jedem Deployment. |
DomainSlug | Mandant wird aus der Subdomain extrahiert | Wenn jeder Mandant seine eigene Subdomain hat |
Header | Mandant aus dem X-Tenant-Id-Header | Nur-API-Zugriff, Reverse-Proxy-Setups |
Mandantenadministrator
Abschnitt betitelt „Mandantenadministrator“Konfiguriert den Mandantenadministrationsbereich, einschließlich der Authentifizierungsmethoden für Mandantenadministratoren.
{ "TenantAdmin": { "Authentication": { "AllowRampInternal": true, "AllowWindowsAuth": false, "Oidc": { "Enabled": false, "Authority": "", "ClientId": "", "ClientSecret": "", "Scopes": ["openid", "profile", "email"], "DisplayName": "Single Sign-On" }, "Ldap": { "Enabled": false, "Server": "", "Port": 389, "UseSsl": false, "BaseDn": "", "UserFilter": "(uid={0})", "BindDn": null, "BindPassword": null, "DisplayName": "LDAP Directory" } }, "Administrators": [ { "Username": "admin", "Provider": "RampInternal" } ] }}Authentifizierungsoptionen
Abschnitt betitelt „Authentifizierungsoptionen“| Eigenschaft | Typ | Standard | Beschreibung |
|---|---|---|---|
AllowRampInternal | bool | true | Benutzername-/Passwort-Anmeldung für Mandantenadministratoren erlauben |
AllowWindowsAuth | bool | false | Windows Integrated Authentication erlauben |
OIDC-Optionen (für die Mandantenadministrator-Anmeldung)
Abschnitt betitelt „OIDC-Optionen (für die Mandantenadministrator-Anmeldung)“| Eigenschaft | Typ | Standard | Beschreibung |
|---|---|---|---|
Enabled | bool | false | OIDC-Authentifizierung für Mandantenadministratoren aktivieren |
Authority | string | (leer) | OIDC-Authority-URL (z. B. https://keycloak.example.com/realms/ramp) |
ClientId | string | (leer) | OIDC-Client-ID |
ClientSecret | string | (leer) | Geheimer OIDC-Client-Schlüssel |
Scopes | string[] | ["openid", "profile", "email"] | Anzufordernde OIDC-Scopes |
DisplayName | string | Single Sign-On | Schaltflächenbeschriftung auf der Anmeldeseite |
LDAP-Optionen (für die Mandantenadministrator-Anmeldung)
Abschnitt betitelt „LDAP-Optionen (für die Mandantenadministrator-Anmeldung)“| Eigenschaft | Typ | Standard | Beschreibung |
|---|---|---|---|
Enabled | bool | false | LDAP-Authentifizierung für Mandantenadministratoren aktivieren |
Server | string | (leer) | LDAP-Server-Hostname |
Port | int | 389 | LDAP-Server-Port |
UseSsl | bool | false | SSL/TLS (LDAPS) verwenden |
BaseDn | string | (leer) | Basis-DN für die Benutzersuche |
UserFilter | string | (uid={0}) | LDAP-Benutzerfilter. {0} wird durch den Benutzernamen ersetzt. |
BindDn | string | null | Bind-DN für das LDAP-Dienstkonto |
BindPassword | string | null | Bind-Passwort für das LDAP-Dienstkonto |
DisplayName | string | LDAP Directory | Schaltflächenbeschriftung auf der Anmeldeseite |
Administratorenliste
Abschnitt betitelt „Administratorenliste“Vorautorisierte Mandantenadministratoren. Wird bei der Anmeldung abgeglichen, um zu bestimmen, wer TenantAdministrator-Zugriff hat.
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
Username | string | Abzugleichender Benutzername (für RampInternal, WindowsAD, Ldap) |
Email | string | Abzugleichende E-Mail (für Oidc) |
Provider | string | Authentifizierungsanbieter: RampInternal, WindowsAD, Oidc, Ldap |
Bootstrap
Abschnitt betitelt „Bootstrap“Konfiguriert initiale Administratorkonten, die beim ersten Start erstellt werden. Wird für die Ersteinrichtung oder die Notfallwiederherstellung verwendet.
{ "Bootstrap": { "Administrators": [ { "IdentityProvider": "RAMP", "Username": "admin", "Email": "admin@example.com", "FirstName": "System", "LastName": "Administrator", "Password": "Passw0rd" } ], "TenantAdministrators": [ { "IdentityProvider": "RAMP", "Username": "tenantadmin", "Email": "tenantadmin@ramp.local", "FirstName": "Tenant", "LastName": "Administrator", "Password": "Passw0rd" } ] }}Administratoreintrag
Abschnitt betitelt „Administratoreintrag“| Eigenschaft | Typ | Standard | Beschreibung |
|---|---|---|---|
IdentityProvider | string | RAMP | Identitätsanbietertyp: RAMP (intern) |
Username | string | (erforderlich) | Anmelde-Benutzername |
Email | string | (erforderlich) | E-Mail-Adresse |
FirstName | string | null | Vorname |
LastName | string | null | Nachname |
Password | string | null | Passwort. Wenn nicht gesetzt, wird ein zufälliges Passwort generiert und protokolliert. |
ProviderSubjectId | string | null | Externe Anbieter-Subject-ID (für OIDC/LDAP-Bootstrap) |
Beim Start prüft RAMP, ob diese Benutzer vorhanden sind. Wenn nicht, werden sie mit den angegebenen Anmeldedaten erstellt und der entsprechenden Rolle (Administrator oder TenantAdministrator) zugewiesen.
Weitere Informationen finden Sie unter Bootstrap-Administratoren.
Windows-Authentifizierung
Abschnitt betitelt „Windows-Authentifizierung“Konfiguriert die Windows Integrated Authentication (IIS/Kestrel mit Negotiate/NTLM).
{ "Authentication": { "WindowsAuthentication": { "AutoProvision": false, "Administrators": [], "TenantAdministrators": [] } }}| Eigenschaft | Typ | Standard | Beschreibung |
|---|---|---|---|
AutoProvision | bool | false | RAMP-Benutzerkonten automatisch bei der ersten Windows-Auth-Anmeldung erstellen |
Administrators | string[] | [] | Windows-Domain-Benutzernamen, die bei der Anmeldung die Administrator-Rolle erhalten |
TenantAdministrators | string[] | [] | Windows-Domain-Benutzernamen, die bei der Anmeldung die TenantAdministrator-Rolle erhalten |
OIDC-Direktzugriff (Nur Entwicklung)
Abschnitt betitelt „OIDC-Direktzugriff (Nur Entwicklung)“Aktiviert den OIDC Resource Owner Password Credentials (ROPC)-Flow für Entwicklung und Tests.
{ "OidcDirectAccess": { "Enabled": false }}| Eigenschaft | Typ | Standard | Beschreibung |
|---|---|---|---|
Enabled | bool | false | ROPC-Flow aktivieren. Nur für Entwicklung – niemals in der Produktion aktivieren. |
Protokollierung (Serilog)
Abschnitt betitelt „Protokollierung (Serilog)“Konfiguriert die Anwendungsprotokollierung über Serilog.
{ "Serilog": { "MinimumLevel": { "Default": "Information", "Override": { "Microsoft": "Warning", "Microsoft.AspNetCore": "Warning", "Microsoft.AspNetCore.Authentication": "Error", "Microsoft.IdentityModel": "Error", "System": "Warning" } } }}Protokollierungsebenen
Abschnitt betitelt „Protokollierungsebenen“| Ebene | Beschreibung |
|---|---|
Verbose | Detaillierteste Protokollierung |
Debug | Entwickler-Diagnose |
Information | Normale Betriebsereignisse |
Warning | Unerwartete, aber behandelte Situationen |
Error | Fehler, die Aufmerksamkeit erfordern |
Fatal | Fehler auf Anwendungsabsturz-Ebene |
Empfohlene Überschreibungen
Abschnitt betitelt „Empfohlene Überschreibungen“| Namespace | Produktion | Entwicklung | Warum |
|---|---|---|---|
Default | Information | Debug | Allgemeine Anwendungsprotokollierung |
Microsoft | Warning | Information | ASP.NET Core-Framework |
Microsoft.AspNetCore | Warning | Information | HTTP-Anfrage-Pipeline |
Microsoft.AspNetCore.Authentication | Error | Error | Auth-Middleware (sehr gesprächig bei Info/Warning) |
Microsoft.IdentityModel | Error | Error | JWT-Token-Validierung (gesprächig) |
System | Warning | Warning | .NET-Laufzeitumgebung |
Protokollausgaben
Abschnitt betitelt „Protokollausgaben“RAMP schreibt Protokolle in:
- Konsole – immer aktiviert
- Datei –
logs/ramp-{date}.logmit täglichem Rollover
Weitere Serilog-Senken können nach Standard-Serilog-Konfigurationsmustern konfiguriert werden.
Globale Einstellungen
Abschnitt betitelt „Globale Einstellungen“Übergeordnete Einstellungen, die keinem spezifischen Abschnitt angehören.
{ "FrontendUrl": "http://localhost:5173", "AllowedHosts": "*"}| Eigenschaft | Typ | Standard | Beschreibung |
|---|---|---|---|
FrontendUrl | string | (leer) | Frontend-URL für CORS-Richtlinien und E-Mail-Link-Generierung. Auf Ihre Web-Frontend-URL setzen. |
AllowedHosts | string | * | Standard-ASP.NET Core-Host-Filterung. Semikolon-getrennte Liste der erlaubten Hostnamen. |
Implizite Konfiguration
Abschnitt betitelt „Implizite Konfiguration“Einige Einstellungen werden automatisch abgeleitet und nicht direkt konfiguriert.
Hangfire (Hintergrundaufgaben)
Abschnitt betitelt „Hangfire (Hintergrundaufgaben)“- Wenn
Database.ProviderSqlServerist: Verwendet SQL Server-Speicher für persistente Auftragswarteschlangen - Alle anderen Anbieter: Greift auf In-Memory-Speicher zurück (Aufträge gehen beim Neustart verloren)
- Dashboard verfügbar unter
/_hangfire(erfordert die Administrator-Rolle)
Zustandsprüfungen
Abschnitt betitelt „Zustandsprüfungen“Immer verfügbar (keine Konfiguration erforderlich):
| Endpunkt | Beschreibung |
|---|---|
/_health | Gesamter Systemzustand |
/_health/ready | Bereitschaftsprüfung (Datenbankverbindung) |
/_health/live | Lebendigkeitsprüfung (Anwendung läuft) |
Swagger / API-Dokumentation
Abschnitt betitelt „Swagger / API-Dokumentation“- Verfügbar unter
/_swaggernur in der Entwicklungsumgebung - In der Produktion automatisch deaktiviert
PID-Datei
Abschnitt betitelt „PID-Datei“- Wird beim Start unter
{BaseDirectory}/ramp-api.{pid}.piderstellt - Wird beim Prozessende automatisch gelöscht
- Nützlich für Prozessverwaltungsskripte
Umgebungsspezifische Beispiele
Abschnitt betitelt „Umgebungsspezifische Beispiele“SQLite + In-Memory-Cache für die lokale Entwicklung:
{ "FrontendUrl": "http://localhost:5173", "Database": { "Provider": "Sqlite", "ConnectionString": "Data Source=ramp_dev.db" }, "Cache": { "Provider": "InMemory" }, "SignalR": { "UseRedisBackplane": false }}SQL Server + Redis für Produktions-Deployments:
{ "FrontendUrl": "https://ramp.example.com", "Database": { "Provider": "SqlServer", "ConnectionString": "Server=db-server;Database=RAMP;User Id=ramp_app;Password=CHANGE_ME;TrustServerCertificate=False;Encrypt=True", "AutoMigrate": false }, "Jwt": { "Secret": "CHANGE_ME_TO_A_LONG_RANDOM_SECRET_KEY_AT_LEAST_32_CHARS" }, "Cache": { "Provider": "Redis", "Redis": { "ConnectionString": "redis-server:6379", "InstanceName": "RAMP:Prod:" } }, "SignalR": { "UseRedisBackplane": true, "Redis": { "ConnectionString": "redis-server:6379", "ChannelPrefix": "RAMP:Prod:SignalR:" } }, "FileStorage": { "Provider": "MinIO", "MinIO": { "Endpoint": "minio-server:9000", "AccessKey": "CHANGE_ME", "SecretKey": "CHANGE_ME", "BucketName": "ramp-uploads", "UseSSL": true } }, "EmailSettings": { "SmtpHost": "smtp.example.com", "SmtpPort": 587, "UseSsl": true, "Username": "ramp@example.com", "Password": "CHANGE_ME", "FromAddress": "ramp@example.com", "FromName": "RAMP" }}Docker-Deployment mit SQLite, MinIO und Redis:
{ "Database": { "Provider": "Sqlite", "ConnectionString": "Data Source=/app/data/ramp.db" }, "FileStorage": { "Provider": "MinIO", "MinIO": { "Endpoint": "ramp-minio:9000", "AccessKey": "admin", "SecretKey": "minio_password", "BucketName": "ramp-uploads" } }, "Cache": { "Provider": "Redis", "Redis": { "ConnectionString": "ramp-redis:6379" } }, "SignalR": { "UseRedisBackplane": true, "Redis": { "ConnectionString": "ramp-redis:6379" } }}