ASP.NET Coreオプション
3009 ワード
目次1、オプションインタフェース 2、注入構成とIOptions 3,IOptionsSnapshot
まずASPについて理解する.NET Coreの構成は、ここをクリックしてください.https://www.cnblogs.com/whuanle/p/13061059.html
ASP.NET Coreのオプションインタフェースは、次の3つです.
この3つの方法は、ライフサイクルやファイルモニタリングなどの違いで構成を得ることができます.
まずASPを作成します.NET Core APIプロジェクト、testを追加します.jsonファイル、内容は以下の通りです.
対応するモデルクラスをもう1つ作成します.
次に、Startupの
これで構成サービスを自動的に注入できます.では、この構成をどのように受信しますか?まず
コントローラを追加します.名前は次のとおりです.
これでアクセスの構成を受信できます.これがアプリケーション起動後に構成データを読み出す. ネーミングオプション: は、単一のインスタンスとして登録され、任意のサービス生存期間に注入することができる.
すなわち、アプリケーションが起動する前にプロファイル生成オブジェクト(単一のインスタンス)が読み込まれている.もちろん、後でプロファイル(.json)を変更しても、このオブジェクトには影響しません.
ドキュメントの説明:
OptionsSnapshotのライフ・ドメインはscopedであり、1つのリクエストサイクルで有効です.
その他は変更されません.使用時:
OptionsSnapshotはリクエストごとに更新されるため、プロファイルが変更されると、更新をタイムリーに取得できます.OptionsMonitorでは若干異なります.
IOptionsSnapshotとIOptionsMonitorは、プロファイルの変更を検出できますが、IOptionsSnapshotはリクエストのたびに新しいオブジェクトであり、IOptionsMonitorは単一のモードです.
まずASPについて理解する.NET Coreの構成は、ここをクリックしてください.https://www.cnblogs.com/whuanle/p/13061059.html
1、オプションインタフェース
ASP.NET Coreのオプションインタフェースは、次の3つです.
IOptions
IOptionsSnapshot
IOptionsMonitor
この3つの方法は、ライフサイクルやファイルモニタリングなどの違いで構成を得ることができます.
2,注入構成とIOptions
まずASPを作成します.NET Core APIプロジェクト、testを追加します.jsonファイル、内容は以下の通りです.
{
"Title": " ",
"Name": " "
}
対応するモデルクラスをもう1つ作成します.
public class TestModel
{
public string Title { get; set; }
public string Name { get; set; }
}
次に、Startupの
ConfigureServices
メソッドに次のものを追加します. services.Configure(new ConfigurationBuilder().AddJsonFile("test.json").Build());
これで構成サービスを自動的に注入できます.では、この構成をどのように受信しますか?まず
IOptions
を使用して受信することができます.コントローラを追加します.名前は次のとおりです.
public class TestController : ControllerBase
{
private readonly TestModel _options;
public TestController(IOptions options)
{
_options = options.Value;
}
}
これでアクセスの構成を受信できます.これが
IOptions
の使用です.IOptions
には、サポートされていないという特徴があります.すなわち、アプリケーションが起動する前にプロファイル生成オブジェクト(単一のインスタンス)が読み込まれている.もちろん、後でプロファイル(.json)を変更しても、このオブジェクトには影響しません.
3,IOptionsSnapshot
ドキュメントの説明:
IOptionsSnapshot
を使用すると、生存期間アクセスおよびキャッシュ・オプションを要求するたびに、各リクエストに対して1回のオプションが計算されます.OptionsSnapshotのライフ・ドメインはscopedであり、1つのリクエストサイクルで有効です.
その他は変更されません.使用時:
private readonly TestModel _options;
public TestController(IOptionsSnapshot options)
{
_options = options.Value;
}
OptionsSnapshotはリクエストごとに更新されるため、プロファイルが変更されると、更新をタイムリーに取得できます.OptionsMonitorでは若干異なります.
public class TestController : ControllerBase
{
private readonly IOptionsMonitor _options;
public TestController(IOptionsMonitor options)
{
_options = options;
}
[HttpGet("T")]
public ContentResult T()
{
return new ContentResult()
{
Content = _options.CurrentValue.Title
};
}
}
IOptionsSnapshotとIOptionsMonitorは、プロファイルの変更を検出できますが、IOptionsSnapshotはリクエストのたびに新しいオブジェクトであり、IOptionsMonitorは単一のモードです.