INI 構成プロバイダー
このページは英語から自動翻訳されています。 原文を読む
Sisk には、JSON 以外の起動構成を取得する方法があります。実際には、IConfigurationReader を実装する任意のパイプラインを使用して、PortableConfigurationBuilder.WithConfigurationPipeline でサーバーの構成を任意のファイル タイプから読み取ることができます。
Sisk.IniConfiguration パッケージでは、共通の構文エラーに対して例外をスローしないストリームベースの INI ファイル リーダーと、シンプルな構成構文が提供されます。このパッケージは、Sisk フレームワークの外部で使用でき、効率的な INI ドキュメント リーダーが必要なプロジェクトに柔軟性を提供します。
インストール #
パッケージをインストールするには、次のコマンドから始めることができます。
$ dotnet add package Sisk.IniConfigurationまた、INI IConfigurationReader や Sisk 依存関係を含まないコア パッケージもインストールできます。
$ dotnet add package Sisk.IniConfiguration.Coreメイン パッケージを使用すると、次の例のようにコードで使用できます。
class Program
{
static HttpServerHostContext Host = null!;
static void Main(string[] args)
{
Host = HttpServer.CreateBuilder()
.UsePortableConfiguration(config =>
{
config.WithConfigFile("app.ini", createIfDontExists: true);
// 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}!");
}
}上記のコードは、プロセスの現在のディレクトリ (CurrentDirectory) にある app.ini ファイルを探します。INI ファイルの内容は次のようになります。
[Server]
# 複数のリスニング アドレスがサポートされます
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 フレーバーと構文 #
現在の実装フレーバー:
- プロパティとセクション名は 大文字小文字を区別しません。
- プロパティ名と値は トリミングされます、ただし値が引用符で囲まれている場合は除きます。
- 値は単一引用符または二重引用符で囲むことができます。引用符内には改行を含めることができます。
#と;でコメントをサポートします。末尾のコメントも許可されます。- プロパティには複数の値を指定できます。
詳細については、Sisk で使用されている INI パーサーの “フレーバー” のドキュメントが こちら にあります。
次の INI コードを例として使用します。
One = 1
Value = this is an value
Another value = "this value
has an line break on it"
; 以下のコードにはいくつかの色があります
[some section]
Color = Red
Color = Blue
Color = Yellow ; 黄色は使用しないでくださいこれを解析するには:
// 文字列から INI テキストを解析
IniDocument doc = IniDocument.FromString(iniText);
// 1 つの値を取得
string? one = doc.Global.GetOne("one");
string? anotherValue = doc.Global.GetOne("another value");
// 複数の値を取得
string[]? colors = doc.GetSection("some section")?.GetMany("color");構成パラメーター #
| セクションと名前 | 複数の値を許可 | 説明 |
|---|---|---|
Server.Listen | はい | サーバーのリスニング アドレス/ポート。 |
Server.Encoding | いいえ | サーバーの既定のエンコード。 |
Server.MaximumContentLength | いいえ | サーバーの最大コンテンツ長 (バイト単位)。 |
Server.IncludeRequestIdHeader | いいえ | HTTP サーバーが X-Request-Id ヘッダーを送信するかどうかを指定します。 |
Server.ThrowExceptions | いいえ | 処理されていない例外をスローするかどうかを指定します。 |
Server.AccessLogsStream | いいえ | アクセス ログの出力ストリームを指定します。 |
Server.ErrorsLogsStream | いいえ | エラー ログの出力ストリームを指定します。 |
Cors.AllowMethods | いいえ | CORS Allow-Methods ヘッダー値を指定します。 |
Cors.AllowHeaders | いいえ | CORS Allow-Headers ヘッダー値を指定します。 |
Cors.AllowOrigins | いいえ | 複数の Allow-Origin ヘッダー、コンマで区切られた値。 AllowOrigins に関する詳細情報。 |
Cors.AllowOrigin | いいえ | 1 つの Allow-Origin ヘッダーを指定します。 |
Cors.ExposeHeaders | いいえ | CORS Expose-Headers ヘッダー値を指定します。 |
Cors.AllowCredentials | いいえ | CORS Allow-Credentials ヘッダー値を指定します。 |
Cors.MaxAge | いいえ | CORS Max-Age ヘッダー値を指定します。 |