【发布时间】: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