Proveedor de configuración INI
Esta página fue traducida automáticamente del inglés. Leer el original
Sisk tiene un método para obtener configuraciones de inicio distintas de JSON. De hecho, cualquier canal que implemente IConfigurationReader puede usarse con PortableConfigurationBuilder.WithConfigurationPipeline, leyendo la configuración del servidor desde cualquier tipo de archivo.
El paquete Sisk.IniConfiguration ofrece un lector de archivos INI basado en streams que no lanza excepciones por errores de sintaxis comunes y posee una sintaxis de configuración sencilla. Este paquete puede usarse fuera del framework Sisk, ofreciendo flexibilidad para proyectos que requieran un lector de documentos INI eficiente.
Instalación #
Para instalar el paquete, puedes comenzar con:
$ dotnet add package Sisk.IniConfigurationTambién puedes instalar el paquete central, que no incluye el INI IConfigurationReader, ni la dependencia de Sisk, solo los serializadores INI:
$ dotnet add package Sisk.IniConfiguration.CoreCon el paquete principal, puedes usarlo en tu código como se muestra en el ejemplo a continuación:
class Program
{
static HttpServerHostContext Host = null!;
static void Main(string[] args)
{
Host = HttpServer.CreateBuilder()
.UsePortableConfiguration(config =>
{
config.WithConfigFile("app.ini", createIfDontExists: true);
// usa el lector de configuración IniConfigurationReader
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}!");
}
}El código anterior buscará un archivo app.ini en el directorio actual del proceso (CurrentDirectory). El archivo INI se ve así:
[Server]
# Se admiten múltiples direcciones de escucha
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"Sabor y sintaxis de INI #
Sabor de la implementación actual:
- Los nombres de propiedades y secciones son insensibles a mayúsculas/minúsculas.
- Los nombres y valores de las propiedades están recortados, a menos que los valores estén entre comillas.
- Los valores pueden ir entre comillas simples o dobles. Las comillas pueden contener saltos de línea en su interior.
- Se admiten comentarios con
#y;. Además, se permiten comentarios al final de la línea. - Las propiedades pueden tener múltiples valores.
En detalle, la documentación del “sabor” del analizador INI usado en Sisk está disponible en este documento.
Usando el siguiente código INI como ejemplo:
One = 1
Value = this is an value
Another value = "this value
has an line break on it"
; el código a continuación tiene algunos colores
[some section]
Color = Red
Color = Blue
Color = Yellow ; no usar amarilloAnalízalo con:
// analiza el texto INI desde la cadena
IniDocument doc = IniDocument.FromString(iniText);
// obtener un valor
string? one = doc.Global.GetOne("one");
string? anotherValue = doc.Global.GetOne("another value");
// obtener múltiples valores
string[]? colors = doc.GetSection("some section")?.GetMany("color");Parámetros de configuración #
| Sección y nombre | Permitir múltiples valores | Descripción |
|---|---|---|
Server.Listen | Yes | Direcciones/puertos de escucha del servidor. |
Server.Encoding | No | Codificación predeterminada del servidor. |
Server.MaximumContentLength | No | Tamaño máximo de content-length del servidor en bytes. Cuando se omite, se mantiene la codificación predeterminada del servidor (100 MB desde Sisk 1.7). Usa 0 para sin límite. |
Server.IncludeRequestIdHeader | No | Especifica si el servidor HTTP debe enviar el encabezado X-Request-Id. |
Server.ThrowExceptions | No | Especifica si se deben lanzar excepciones no controladas. |
Server.AccessLogsStream | No | Especifica el stream de salida del registro de accesos. |
Server.ErrorsLogsStream | No | Especifica el stream de salida del registro de errores. |
Cors.AllowMethods | No | Especifica el valor del encabezado CORS Allow-Methods. |
Cors.AllowHeaders | No | Especifica el valor del encabezado CORS Allow-Headers. |
Cors.AllowOrigins | No | Especifica múltiples encabezados Allow-Origin, separados por comas. AllowOrigins para más información. |
Cors.AllowOrigin | No | Especifica un encabezado Allow-Origin. |
Cors.ExposeHeaders | No | Especifica el valor del encabezado CORS Expose-Headers. |
Cors.AllowCredentials | No | Especifica el valor del encabezado CORS Allow-Credentials. |
Cors.MaxAge | No | Especifica el valor del encabezado CORS Max-Age. |