Diensteanbieter
Diese Seite wurde automatisch aus dem Englischen übersetzt. Original lesen
Diensteanbieter sind eine Möglichkeit, Ihre Sisk-Anwendung mit einer portablen Konfigurationsdatei auf verschiedene Umgebungen zu übertragen. Diese Funktion ermöglicht es Ihnen, den Serverport, Parameter und andere Optionen ohne Änderung des Anwendungscode für jede Umgebung zu ändern. Dieses Modul hängt von der Sisk-Konstruktionsyntax ab und kann über die Methode UsePortableConfiguration konfiguriert werden.
Ein Konfigurationsanbieter wird mit IConfigurationProvider implementiert, der einen Konfigurationsleser bereitstellt und jede Implementierung erhalten kann. Standardmäßig bietet Sisk einen JSON-Konfigurationsleser an, es gibt jedoch auch ein Paket für INI-Dateien. Sie können auch Ihren eigenen Konfigurationsanbieter erstellen und ihn mit:
using var app = HttpServer.CreateBuilder()
.UsePortableConfiguration(config =>
{
config.WithConfigReader<MyConfigurationReader>();
})
.Build();Wie bereits erwähnt, ist der Standardanbieter eine JSON-Datei. Standardmäßig wird nach einer Datei mit dem Namen service-config.json gesucht, und diese wird im aktuellen Verzeichnis des laufenden Prozesses und nicht im Verzeichnis der ausführbaren Datei gesucht.
Sie können den Dateinamen sowie das Verzeichnis, in dem Sisk nach der Konfigurationsdatei suchen soll, mit:
using Sisk.Core.Http;
using Sisk.Core.Http.Hosting;
using var app = HttpServer.CreateBuilder()
.UsePortableConfiguration(config =>
{
config.WithConfigFile("config.toml",
createIfDontExists: true,
lookupDirectories:
ConfigurationFileLookupDirectory.CurrentDirectory |
ConfigurationFileLookupDirectory.AppDirectory);
})
.Build();Der obige Code sucht nach der Datei config.toml im aktuellen Verzeichnis des laufenden Prozesses. Wenn diese nicht gefunden wird, sucht er dann im Verzeichnis, in dem die ausführbare Datei liegt. Wenn die Datei nicht existiert, wird der Parameter createIfDontExists beachtet, der die Datei ohne Inhalt im letzten getesteten Pfad (basierend auf lookupDirectories) erstellt, und ein Fehler wird in der Konsole ausgegeben, was die Initialisierung der Anwendung verhindert.
Tipp
Sie können den Quellcode des INI-Konfigurationslesers und des JSON-Konfigurationslesers betrachten, um zu verstehen, wie ein IConfigurationProvider implementiert wird.
Lesen von Konfigurationen aus einer JSON-Datei #
Standardmäßig bietet Sisk einen Konfigurationsanbieter, der Konfigurationen aus einer JSON-Datei liest. Diese Datei folgt einer festen Struktur und besteht aus den folgenden Parametern:
{
"Server": {
"DefaultEncoding": "UTF-8",
"ThrowExceptions": true,
"IncludeRequestIdHeader": true
},
"ListeningHost": {
"Label": "Meine Sisk-Anwendung",
"Ports": [
"http://localhost:80/",
"https://localhost:443/", // Konfigurationsdateien unterstützen auch Kommentare
],
"CrossOriginResourceSharingPolicy": {
"AllowOrigin": "*",
"AllowOrigins": [ "*" ], // neu in 0.14
"AllowMethods": [ "*" ],
"AllowHeaders": [ "*" ],
"MaxAge": 3600
},
"Parameters": {
"MySqlConnection": "server=localhost;user=root;"
}
}
}Die aus einer Konfigurationsdatei erstellten Parameter können im Serverkonstruktor abgerufen werden:
using var app = HttpServer.CreateBuilder()
.UsePortableConfiguration(config =>
{
config.WithParameters(paramCollection =>
{
string databaseConnection = paramCollection.GetValueOrThrow("MySqlConnection");
});
})
.Build();Jeder Konfigurationsleser bietet eine Möglichkeit, die Serverinitialisierungsparameter zu lesen. Einige Eigenschaften sind so konzipiert, dass sie in der Prozessumgebung anstelle der Konfigurationsdatei definiert werden, wie z. B. sensible API-Daten, API-Schlüssel usw.
Konfigurationsdateistruktur #
Die JSON-Konfigurationsdatei besteht aus den folgenden Eigenschaften:
| Eigenschaft | Pflichtfeld | Beschreibung |
|---|---|---|
| Server | Erforderlich | Stellt den Server selbst mit seinen Einstellungen dar. |
| Server.AccessLogsStream | Optional | Standardmäßig console. Gibt den Ausgabestream für die Zugriffsprotokolle an. Kann ein Dateiname, null oder console sein. |
| Server.ErrorsLogsStream | Optional | Standardmäßig null. Gibt den Ausgabestream für die Fehlerprotokolle an. Kann ein Dateiname, null oder console sein. |
| Server.MaximumContentLength | Optional | |
| Server.MaximumContentLength | Optional | Standardmäßig 0. Gibt die maximale Inhaltslänge in Bytes an. Null bedeutet unendlich. |
| Server.IncludeRequestIdHeader | Optional | Standardmäßig false. Gibt an, ob der HTTP-Server den X-Request-Id-Header senden soll. |
| Server.ThrowExceptions | Optional | Standardmäßig true. Gibt an, ob unbehandelte Ausnahmen ausgelöst werden sollen. Auf false setzen, wenn in der Produktion, und auf true, wenn beim Debuggen. |
| ListeningHost | Erforderlich | Stellt den Server-Host dar, der zugehört. |
| ListeningHost.Label | Optional | Stellt das Anwendungslabel dar. |
| ListeningHost.Ports | Erforderlich | Stellt ein Array von Zeichenfolgen dar, die der Syntax von ListeningPort entsprechen. |
| ListeningHost.CrossOriginResourceSharingPolicy | Optional | Konfiguriert die CORS-Header für die Anwendung. |
| ListeningHost.CrossOriginResourceSharingPolicy.AllowCredentials | Optional | Standardmäßig false. Gibt den Allow-Credentials-Header an. |
| ListeningHost.CrossOriginResourceSharingPolicy.ExposeHeaders | Optional | Standardmäßig null. Erwartet ein Array von Zeichenfolgen. Gibt den Expose-Headers-Header an. |
| ListeningHost.CrossOriginResourceSharingPolicy.AllowOrigin | Optional | Standardmäßig null. Erwartet eine Zeichenfolge. Gibt den Allow-Origin-Header an. |
| ListeningHost.CrossOriginResourceSharingPolicy.AllowOrigins | Optional | Standardmäßig null. Erwartet ein Array von Zeichenfolgen. Gibt mehrere Allow-Origin-Header an. Siehe AllowOrigins für weitere Informationen. |
| ListeningHost.CrossOriginResourceSharingPolicy.AllowMethods | Optional | Standardmäßig null. Erwartet ein Array von Zeichenfolgen. Gibt den Allow-Methods-Header an. |
| ListeningHost.CrossOriginResourceSharingPolicy.AllowHeaders | Optional | Standardmäßig null. Erwartet ein Array von Zeichenfolgen. Gibt den Allow-Headers-Header an. |
| ListeningHost.CrossOriginResourceSharingPolicy.MaxAge | Optional | Standardmäßig null. Erwartet eine Ganzzahl. Gibt den Max-Age-Header in Sekunden an. |
| ListeningHost.Parameters | Optional | Gibt die Eigenschaften an, die der Anwendungskonfigurationsmethode bereitgestellt werden. |