Provedor de configuração INI
Esta página foi traduzida automaticamente do inglês. Ler o original
Sisk possui um método para obter configurações de inicialização diferentes de JSON. Na verdade, qualquer pipeline que implemente IConfigurationReader pode ser usado com PortableConfigurationBuilder.WithConfigurationPipeline, lendo a configuração do servidor a partir de qualquer tipo de arquivo.
O pacote Sisk.IniConfiguration fornece um leitor de arquivos INI baseado em stream que não lança exceções para erros de sintaxe comuns e possui uma sintaxe de configuração simples. Este pacote pode ser usado fora do framework Sisk, oferecendo flexibilidade para projetos que necessitam de um leitor de documentos INI eficiente.
Instalação #
Para instalar o pacote, você pode começar com:
$ dotnet add package Sisk.IniConfigurationVocê também pode instalar o pacote core, que não inclui o INI IConfigurationReader, nem a dependência do Sisk, apenas os serializadores INI:
$ dotnet add package Sisk.IniConfiguration.CoreCom o pacote principal, você pode usá-lo em seu código como mostrado no exemplo abaixo:
class Program
{
static HttpServerHostContext Host = null!;
static void Main(string[] args)
{
Host = HttpServer.CreateBuilder()
.UsePortableConfiguration(config =>
{
config.WithConfigFile("app.ini", createIfDontExists: true);
// usa o leitor de configuração 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}!");
}
}O código acima procurará um arquivo app.ini no diretório atual do processo (CurrentDirectory). O arquivo INI tem a seguinte aparência:
[Server]
# Vários endereços de escuta são suportados
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 e sintaxe do INI #
Sabor da implementação atual:
- Propriedades e nomes de seção não diferenciam maiúsculas de minúsculas.
- Nomes e valores de propriedades são removidos de espaços em branco, a menos que os valores estejam entre aspas.
- Valores podem ser citados com aspas simples ou duplas. As aspas podem conter quebras de linha dentro delas.
- Comentários são suportados com
#e;. Além disso, comentários ao final da linha são permitidos. - Propriedades podem ter múltiplos valores.
Em detalhes, a documentação sobre o “sabor” do analisador INI usado no Sisk está disponível neste documento.
Usando o código INI a seguir como exemplo:
One = 1
Value = this is an value
Another value = "this value
has an line break on it"
; o código abaixo tem algumas cores
[some section]
Color = Red
Color = Blue
Color = Yellow ; não use amareloAnalise-o com:
// analisa o texto INI a partir da string
IniDocument doc = IniDocument.FromString(iniText);
// obtém um valor
string? one = doc.Global.GetOne("one");
string? anotherValue = doc.Global.GetOne("another value");
// obtém múltiplos valores
string[]? colors = doc.GetSection("some section")?.GetMany("color");Parâmetros de configuração #
| Seção e nome | Permitir múltiplos valores | Descrição |
|---|---|---|
Server.Listen | Sim | Os endereços/portas de escuta do servidor. |
Server.Encoding | Não | A codificação padrão do servidor. |
Server.MaximumContentLength | Não | O tamanho máximo de content-length do servidor em bytes. Quando omitido, o padrão do servidor é mantido (100 MB desde o Sisk 1.7). Use 0 para nenhum limite. |
Server.IncludeRequestIdHeader | Não | Especifica se o servidor HTTP deve enviar o cabeçalho X-Request-Id. |
Server.ThrowExceptions | Não | Especifica se exceções não tratadas devem ser lançadas. |
Server.AccessLogsStream | Não | Especifica o stream de saída do log de acesso. |
Server.ErrorsLogsStream | Não | Especifica o stream de saída do log de erros. |
Cors.AllowMethods | Não | Especifica o valor do cabeçalho CORS Allow-Methods. |
Cors.AllowHeaders | Não | Especifica o valor do cabeçalho CORS Allow-Headers. |
Cors.AllowOrigins | Não | Especifica múltiplos cabeçalhos Allow-Origin, separados por vírgulas. AllowOrigins para mais informações. |
Cors.AllowOrigin | Não | Especifica um cabeçalho Allow-Origin. |
Cors.ExposeHeaders | Não | Especifica o valor do cabeçalho CORS Expose-Headers. |
Cors.AllowCredentials | Não | Especifica o valor do cabeçalho CORS Allow-Credentials. |
Cors.MaxAge | Não | Especifica o valor do cabeçalho CORS Max-Age. |