ASP.NET Coreの「オプション」サービスには多くの変更があります。私は最新バージョンを使用していますが、チュートリアルやサンプルはもう使用できません。ASP.NET強く型付けされたappsettings.jsonのオプション
シンプルに保つため、Visual Studioのテンプレートを使用して新しいASP.NET Core Webアプリケーションを作成しました。
マイappsettings.json
が含まれています
"MyConfig": {
"Foo": "Bar"
}
マイ強く型付けされたconfigオブジェクト:
public class MyConfig {
public string Foo;
}
マイStartup.ConfigureServices
が含まれています
services.AddOptions();
services.Configure<MyConfig>(Configuration.GetSection("MyConfig"));
//services.Configure<MyConfig>(opts => Configuration.GetSection("MyConfig").Bind(opts)); // I also tried this
マイHomeController
は含まれています
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
"Microsoft.Extensions.Configuration.Json": "1.0.0",
"Microsoft.Extensions.Configuration.UserSecrets": "1.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
//"Microsoft.Extensions.Configuration.Binder": "1.0.0", // I also tried this
しかしMyConfig.Foo
オブジェクトは常にnull
です:
public class HomeController : Controller { private readonly MyConfig _myConfig; public HomeController(IOptions<MyConfig> myConfig) { _myConfig = myConfig.Value; } public IActionResult Index() { return Content(_myConfig.Foo); // Foo is null } }
そして、私のproject.json
が含まれています。
あるので、あなたのFooフィールド上にpropertry作るため、すなわち
私は非常に似てやっていると、それは私のために動作します。私はget; set;を追加することをお勧めします。あなたのコードに表示される1つの違いですので、あなたのFooプロパティ、すなわち公的な文字列Foo {get; set;}上にあります。 –
他の人がコメントしたようにrc2を使わないでください。1.0.0で動作します。 –
Ohhはいそれはジョーのようなプロパティは – mybirthname