【问题标题】:ASP.NET Core strongly-typed options from appsettings.json来自 appsettings.json 的 ASP.NET Core 强类型选项
【发布时间】:2016-11-01 14:39:15
【问题描述】:

ASP.NET Core 的“选项”服务有很多变化。我使用的是最新版本,教程和示例都不起作用了。

为了简单起见,我使用 Visual Studio 的模板创建了一个新的 ASP.NET Core Web 应用程序。

我的appsettings.json 包含:

"MyConfig": {
  "Foo": "Bar"
}

我的强类型配置对象:

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 包含:

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 包含:

"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

【问题讨论】:

  • 我的做法非常相似,它对我有用。我建议尝试添加一个 get;set;在您的 Foo 属性上,即 public string Foo {get;set;} 因为这是我在您的代码中看到的一个区别
  • 不要像其他人评论的那样使用 rc2,它适用于 1.0.0
  • 哦,是的,它不像乔所说的那样被定义为财产
  • @JoeAudette 做到了!有点明显,因为它是 .net 中的基本模型绑定方法,但我犯了一个复制粘贴错误。请添加它作为答案,以便我接受?

标签: c# asp.net asp.net-core asp.net-core-mvc .net-core


【解决方案1】:

我做的非常相似,它对我有用。我建议尝试添加一个 get;set;在您的 Foo 字段上使其成为属性,即

public string Foo { get; set; } 

因为这是我在您的代码中看到的一个区别

【讨论】:

  • 您是否使用与我上面相同的project.json 引用?任何地方都没有关于使用哪个的指导。我在移除所有东西的基础上工作,如果它不崩溃那就没关系了。
  • 是的,我使用的是相同的,对于 IOptions,您肯定需要 Microsoft.Extensions.Options.ConfigurationExtensions,因为您拥有它。如果您不使用用户密码,则可以删除该密码,环境变量也是可选的,但对于生产或 Azure 部署很有用。
猜你喜欢
  • 1970-01-01
  • 2017-02-12
  • 2018-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-27
  • 2017-11-01
  • 1970-01-01
相关资源
最近更新 更多