Sisk

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:

C#
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:

C#
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:

JSON
{
    "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:

C#
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:

EigenschaftPflichtfeldBeschreibung
ServerErforderlichStellt den Server selbst mit seinen Einstellungen dar.
Server.AccessLogsStreamOptionalStandardmäßig console. Gibt den Ausgabestream für die Zugriffsprotokolle an. Kann ein Dateiname, null oder console sein.
Server.ErrorsLogsStreamOptionalStandardmäßig null. Gibt den Ausgabestream für die Fehlerprotokolle an. Kann ein Dateiname, null oder console sein.
Server.MaximumContentLengthOptional
Server.MaximumContentLengthOptionalStandardmäßig 0. Gibt die maximale Inhaltslänge in Bytes an. Null bedeutet unendlich.
Server.IncludeRequestIdHeaderOptionalStandardmäßig false. Gibt an, ob der HTTP-Server den X-Request-Id-Header senden soll.
Server.ThrowExceptionsOptionalStandardmäßig true. Gibt an, ob unbehandelte Ausnahmen ausgelöst werden sollen. Auf false setzen, wenn in der Produktion, und auf true, wenn beim Debuggen.
ListeningHostErforderlichStellt den Server-Host dar, der zugehört.
ListeningHost.LabelOptionalStellt das Anwendungslabel dar.
ListeningHost.PortsErforderlichStellt ein Array von Zeichenfolgen dar, die der Syntax von ListeningPort entsprechen.
ListeningHost.CrossOriginResourceSharingPolicyOptionalKonfiguriert die CORS-Header für die Anwendung.
ListeningHost.CrossOriginResourceSharingPolicy.AllowCredentialsOptionalStandardmäßig false. Gibt den Allow-Credentials-Header an.
ListeningHost.CrossOriginResourceSharingPolicy.ExposeHeadersOptionalStandardmäßig null. Erwartet ein Array von Zeichenfolgen. Gibt den Expose-Headers-Header an.
ListeningHost.CrossOriginResourceSharingPolicy.AllowOriginOptionalStandardmäßig null. Erwartet eine Zeichenfolge. Gibt den Allow-Origin-Header an.
ListeningHost.CrossOriginResourceSharingPolicy.AllowOriginsOptionalStandardmäßig null. Erwartet ein Array von Zeichenfolgen. Gibt mehrere Allow-Origin-Header an. Siehe AllowOrigins für weitere Informationen.
ListeningHost.CrossOriginResourceSharingPolicy.AllowMethodsOptionalStandardmäßig null. Erwartet ein Array von Zeichenfolgen. Gibt den Allow-Methods-Header an.
ListeningHost.CrossOriginResourceSharingPolicy.AllowHeadersOptionalStandardmäßig null. Erwartet ein Array von Zeichenfolgen. Gibt den Allow-Headers-Header an.
ListeningHost.CrossOriginResourceSharingPolicy.MaxAgeOptionalStandardmäßig null. Erwartet eine Ganzzahl. Gibt den Max-Age-Header in Sekunden an.
ListeningHost.ParametersOptionalGibt die Eigenschaften an, die der Anwendungskonfigurationsmethode bereitgestellt werden.

Tippen, um die Dokumentation und die API-Referenz zu durchsuchen.