Sisk

INI-Konfiguration

Diese Seite wurde automatisch aus dem Englischen übersetzt. Original lesen

Sisk hat eine Methode, um Startkonfigurationen zu erhalten, die nicht JSON sind. Tatsächlich kann jede Pipeline, die IConfigurationReader implementiert, mit PortableConfigurationBuilder.WithConfigurationPipeline verwendet werden, um die Serverkonfiguration aus jeder Dateityp zu lesen.

Das Sisk.IniConfiguration-Paket bietet einen streambasierten INI-Dateileser, der keine Ausnahmen für häufige Syntaxfehler auslöst und eine einfache Konfigurationssyntax hat. Dieses Paket kann außerhalb des Sisk-Frameworks verwendet werden und bietet Flexibilität für Projekte, die einen effizienten INI-Dokumentleser benötigen.

Installation #

Um das Paket zu installieren, können Sie mit folgendem Befehl beginnen:

Bash
$ dotnet add package Sisk.IniConfiguration

Sie können auch das Core-Paket installieren, das weder den INI-IConfigurationReader noch die Sisk-Abhängigkeit enthält, sondern nur die INI-Serialisierer:

Bash
$ dotnet add package Sisk.IniConfiguration.Core

Mit dem Hauptpaket können Sie es in Ihrem Code wie im folgenden Beispiel verwenden:

C#
class Program
{
    static HttpServerHostContext Host = null!;

    static void Main(string[] args)
    {
        Host = HttpServer.CreateBuilder()
            .UsePortableConfiguration(config =>
            {
                config.WithConfigFile("app.ini", createIfDontExists: true);
                
                // verwendet den IniConfigurationReader-Konfigurationsleser
                config.WithConfigurationPipeline<IniConfigurationReader>();
            })
            .UseRouter(r =>
            {
                r.MapGet("/", SayHello);
            })
            .Build();
        
        Host.Start();
    }

    static HttpResponse SayHello(HttpRequest request)
    {
        string? name = Host.Parameters["name"] ?? "world";
        return new HttpResponse($"Hallo, {name}!");
    }
}

Der obige Code sucht nach einer app.ini-Datei im aktuellen Verzeichnis des Prozesses (CurrentDirectory). Die INI-Datei sieht wie folgt aus:

INI
[Server]
# Mehrere Zuhöradressen werden unterstützt
Listen = http://localhost:5552/
Listen = http://localhost:5553/
ThrowExceptions = false
AccessLogsStream = console

[Cors]
AllowMethods = GET, POST
AllowHeaders = Content-Type, Authorization
AllowOrigin = *

[Parameters]
Name = "Kanye West"

INI-Geschmack und Syntax #

Aktuelle Implementierung des Geschmacks:

  • Eigenschaften- und Sektionsnamen sind groß-/kleinschreibungsunabhängig.
  • Eigenschaftsnamen und Werte werden entfernt, sofern Werte nicht in Anführungszeichen gesetzt sind.
  • Werte können mit einfachen oder doppelten Anführungszeichen umschlossen werden. Anführungszeichen können Zeilenumbrüche enthalten.
  • Kommentare werden mit # und ; unterstützt. Nachgestellte Kommentare sind ebenfalls erlaubt.
  • Eigenschaften können mehrere Werte haben.

Im Detail ist die Dokumentation für den “Geschmack” des INI-Parsers, der in Sisk verwendet wird, in diesem Dokument verfügbar.

Mit dem folgenden INI-Code als Beispiel:

INI
One = 1
Value = this is an value
Another value = "this value
    has an line break on it"

; der Code unten hat einige Farben
[some section]
Color = Red
Color = Blue
Color = Yellow ; verwenden Sie nicht gelb

Parse es mit:

C#
// parse die INI-Text aus der Zeichenfolge
IniDocument doc = IniDocument.FromString(iniText);

// erhalten Sie einen Wert
string? one = doc.Global.GetOne("one");
string? anotherValue = doc.Global.GetOne("another value");

// erhalten Sie mehrere Werte
string[]? colors = doc.GetSection("some section")?.GetMany("color");

Konfigurationsparameter #

Sektion und NameErlaubt mehrere WerteBeschreibung
Server.ListenJaDie Zuhöradressen/Ports des Servers.
Server.EncodingNeinDie Standardcodierung des Servers.
Server.MaximumContentLengthNeinDie maximale Inhaltslänge des Servers in Bytes.
Server.IncludeRequestIdHeaderNeinGibt an, ob der HTTP-Server die X-Request-Id-Header senden soll.
Server.ThrowExceptionsNeinGibt an, ob unbehandelte Ausnahmen ausgelöst werden sollen.
Server.AccessLogsStreamNeinGibt den Ausgabestream für die Zugriffsprotokolle an.
Server.ErrorsLogsStreamNeinGibt den Ausgabestream für die Fehlerprotokolle an.
Cors.AllowMethodsNeinGibt den Wert des CORS-Allow-Methods-Headers an.
Cors.AllowHeadersNeinGibt den Wert des CORS-Allow-Headers-Headers an.
Cors.AllowOriginsNeinGibt mehrere Allow-Origin-Header, getrennt durch Kommata, an. AllowOrigins für weitere Informationen.
Cors.AllowOriginNeinGibt einen Allow-Origin-Header an.
Cors.ExposeHeadersNeinGibt den Wert des CORS-Expose-Headers-Headers an.
Cors.AllowCredentialsNeinGibt den Wert des CORS-Allow-Credentials-Headers an.
Cors.MaxAgeNeinGibt den Wert des CORS-Max-Age-Headers an.

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