Configuration.GetSection は常に Value プロパティの null を返します。
2023-08-17 20:27:33
質問
毎回
Configuration.GetSection
を呼び出すと
Value
プロパティは常にNULLです。
私の
Startup
コンストラクタ
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddEnvironmentVariables();
this.Configuration = builder.Build();
}
私の
ConfigureServices
メソッド
public void ConfigureServices(IServiceCollection services)
{
services.Configure<SqliteSettings>(opts => Configuration.GetSection("SqliteSettings").Bind(opts));
services.AddOptions();
services.AddMvc();
}
私の
appsettings.json
{
"SqliteSettings": {
"DataSource": "C:\\db.sqlite",
"NewDatabase": true,
"Version": 3
}
}
SqliteSettingsを定義するために使用しているクラスです。
public class SqliteSettings
{
public string DataSource { get; set; }
public bool? NewDatabase { get; set; }
public int? Version { get; set; }
public string Password { get; set; }
public long? CacheSize { get; set; }
// More properties
}
JSONのプロパティが同じ量でないとマッチしないのか、データ型の定義に関係するのかと思っていましたが、全く関係ないのかもしれませんね。
どのように解決するのですか?
によると マイクロソフト ドキュメント :
<ブロッククオートGetSection が一致するセクションを返した場合、Value には値が入力されません。A キーとパスは、セクションが存在する場合に返されます。
もしそのセクションの値を見たい場合は、GetChildren() メソッドを呼び出す必要があります。
Configuration.GetSection("SqliteSettings").GetChildren();
あるいは、使用することができます。
Configuration.GetSection("SqliteSettings").Get<SqliteSettings>()
. JSONは、マッチするプロパティが同じ量である必要はありません。マッチしないNULL可能なプロパティはNULLに設定され、NULL不可能なマッチしないプロパティはデフォルト値に設定されます(例:intは0に設定されます)。
関連
-
[解決済み】値が期待した範囲に収まらない
-
[解決済み】別のスレッドがこのオブジェクトを所有しているため、呼び出し側のスレッドはこのオブジェクトにアクセスできない
-
[解決済み】Nullableオブジェクトは値を持たなければならない?
-
[解決済み] リフレクションを使用して文字列からプロパティ値を取得する
-
[解決済み] C#のオートプロパティに初期値を与える最良の方法は何ですか?
-
[解決済み] C#でenumからint値を取得する
-
[解決済み] List<T>をオブジェクトのプロパティでソートする方法
-
[解決済み] フィールドとプロパティの違いは何ですか?
-
[解決済み] 特定のプロパティに対するLINQのDistinct()
-
[解決済み] json.netを使用して、クラス内のプロパティがnullの場合、それを無視する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「未割り当てのローカル変数を使用」とはどういう意味ですか?
-
[解決済み] 保護レベルによりアクセス不能になりました。
-
[解決済み】文字列が有効な DateTime " format dd/MM/yyyy " として認識されなかった。
-
[解決済み】非静的メソッドはターゲットを必要とする
-
[解決済み】Socket.Selectがエラー "An operation was attempted on something that is not a socket" を返す。
-
[解決済み】MetadataException: 指定されたメタデータ・リソースをロードできない
-
[解決済み】Visual studio 2019がデバッグ時にフリーズする件
-
[解決済み】Entity FrameworkからのSqlException - セッション内で他のスレッドが動作しているため、新しいトランザクションは許可されません。
-
[解決済み】Visual Studio: 操作を完了できませんでした。パラメータが正しくありません
-
[解決済み】2年前のMSDateを把握する【クローズド