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:
$ dotnet add package Sisk.IniConfigurationSie können auch das Kernpaket installieren, das den INI IConfigurationReader nicht enthält, weder die Sisk‑Abhängigkeit, sondern nur die INI‑Serialisierer:
$ dotnet add package Sisk.IniConfiguration.CoreMit dem Hauptpaket können Sie es in Ihrem Code wie im folgenden Beispiel verwenden:
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:
[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:
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 GelbParse it with:
// 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 Name | Mehrere Werte zulassen | Beschreibung |
|---|---|---|
Server.Listen | Yes | Die vom Server zu hörenden Adressen/Ports. |
Server.Encoding | No | Die Standardkodierung des Servers. |
Server.MaximumContentLength | No | Die 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.IncludeRequestIdHeader | No | Gibt an, ob der HTTP‑Server den X-Request-Id‑Header senden soll. |
Server.ThrowExceptions | No | Gibt an, ob unbehandelte Ausnahmen geworfen werden sollen. |
Server.AccessLogsStream | No | Gibt den Ausgabestream für Zugriffsprotokolle an. |
Server.ErrorsLogsStream | No | Gibt den Ausgabestream für Fehlermeldungen an. |
Cors.AllowMethods | No | Gibt den Wert des CORS Allow-Methods‑Headers an. |
Cors.AllowHeaders | No | Gibt den Wert des CORS Allow-Headers‑Headers an. |
Cors.AllowOrigins | No | Gibt mehrere Allow-Origin‑Header an, getrennt durch Kommas. AllowOrigins für weitere Informationen. |
Cors.AllowOrigin | No | Gibt einen einzelnen Allow-Origin‑Header an. |
Cors.ExposeHeaders | No | Gibt den Wert des CORS Expose-Headers‑Headers an. |
Cors.AllowCredentials | No | Gibt den Wert des CORS Allow-Credentials‑Headers an. |
Cors.MaxAge | No | Gibt den Wert des CORS Max-Age‑Headers an. |