Sisk

INI-Konfigurationsanbieter

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

Sisk bietet eine Methode zum Laden von Startkonfigurationen, die nicht JSON sind. Tatsächlich kann jede Pipeline, die IConfigurationReader implementiert, mit PortableConfigurationBuilder.WithConfigurationPipeline verwendet werden, um die Serverkonfiguration aus beliebigen Dateitypen zu lesen.

Das Paket Sisk.IniConfiguration stellt einen streambasierten INI-Dateileser bereit, der bei üblichen Syntaxfehlern keine Ausnahmen wirft und eine einfache Konfigurationssyntax verwendet. Dieses Paket kann außerhalb des Sisk‑Frameworks eingesetzt werden und bietet Flexibilität für Projekte, die einen effizienten INI‑Dokumentenleser benötigen.

Installation #

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

Bash
$ dotnet add package Sisk.IniConfiguration

Sie können auch das Kernpaket installieren, das den INI IConfigurationReader nicht enthält, weder die Sisk‑Abhängigkeit, 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($"Hello, {name}!");
    }
}

Der obige Code sucht nach einer app.ini‑Datei im aktuellen Arbeitsverzeichnis des Prozesses (CurrentDirectory). Die INI‑Datei sieht folgendermaßen aus:

INI
[Server]
# Mehrere Listenadressen 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-Variante und Syntax #

Aktuelle Implementierungsvariante:

  • Eigenschaften und Abschnittsnamen sind nicht case‑sensitiv.
  • Eigenschaftsnamen und -werte werden getrimmt, es sei denn, die Werte sind in Anführungszeichen.
  • Werte können mit einfachen oder doppelten Anführungszeichen umschlossen werden. Anführungszeichen können Zeilenumbrüche enthalten.
  • Kommentare werden mit # und ; unterstützt. Außerdem sind nachgestellte Kommentare erlaubt.
  • Eigenschaften können mehrere Werte besitzen.

Im Detail ist die Dokumentation zur „Variante“ des in Sisk verwendeten INI‑Parsers [in diesem Dokument]https://github.com/sisk-http/archive/blob/master/ext/ini-reader-syntax.md verfügbar.

Verwenden Sie den folgenden INI-Code als Beispiel:

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

; der nachfolgende Code hat einige Farben
[some section]
Color = Red
Color = Blue
Color = Yellow ; verwende kein Gelb

Parse it with:

C#
// parse den INI-Text aus dem String
IniDocument doc = IniDocument.FromString(iniText);

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

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

Konfigurationsparameter #

Abschnitt und NameMehrere Werte zulassenBeschreibung
Server.ListenYesDie vom Server zu hörenden Adressen/Ports.
Server.EncodingNoDie Standardkodierung des Servers.
Server.MaximumContentLengthNoDie maximale Content‑Length‑Größe des Servers in Bytes. Wenn weggelassen, bleibt die Server‑Standardgröße erhalten (100 MB seit Sisk 1.7). Verwenden Sie 0 für kein Limit.
Server.IncludeRequestIdHeaderNoGibt an, ob der HTTP‑Server den X-Request-Id‑Header senden soll.
Server.ThrowExceptionsNoGibt an, ob unbehandelte Ausnahmen geworfen werden sollen.
Server.AccessLogsStreamNoGibt den Ausgabestream für Zugriffsprotokolle an.
Server.ErrorsLogsStreamNoGibt den Ausgabestream für Fehlermeldungen an.
Cors.AllowMethodsNoGibt den Wert des CORS Allow-Methods‑Headers an.
Cors.AllowHeadersNoGibt den Wert des CORS Allow-Headers‑Headers an.
Cors.AllowOriginsNoGibt mehrere Allow-Origin‑Header an, getrennt durch Kommas. AllowOrigins für weitere Informationen.
Cors.AllowOriginNoGibt einen einzelnen Allow-Origin‑Header an.
Cors.ExposeHeadersNoGibt den Wert des CORS Expose-Headers‑Headers an.
Cors.AllowCredentialsNoGibt den Wert des CORS Allow-Credentials‑Headers an.
Cors.MaxAgeNoGibt den Wert des CORS Max-Age‑Headers an.

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