c# - Appsetting.json 读取控制器类中键的值,空白?
问题描述
在我的 .net core 2.0 应用程序中,我创建了一个 appsettings.json 文件来存储应用程序的配置详细信息。
应用设置.json
{
"RestCalls": {
"SFGetAllAccounts": "https://example.com",
"SFGetIndividualAccount": "https://example.com",
"B6GetAccount": "https://example.com"
}
}
映射值的等效 .Net 类
public class AppConfiguration
{
public string SFGetAllAccounts { get; set; }
public string SFGetIndividualAccount { get; set; }
public string B6GetAccount { get; set; }
}
在Startup.cs
添加了以下配置
public IConfiguration Configuration { get; set; }
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
Configuration = builder.Build();
}
public void ConfigureServices(IServiceCollection services)
{
services.AddCors();
services.AddMvc();
services.Configure<AppConfiguration>(Configuration.GetSection("RestCalls"));
}
在 Controller 类中,当在 _configuration 对象中调用 Post 方法时,初始化并为空,因此此类 AppConfiguration 的所有属性都为空。
public class HomeController : Controller
{
private readonly IOptions<AppConfiguration> _configuration;
public HomeController(IOptions<AppConfiguration> config)
{
this._configuration = config;
}
public IActionResult Post([FromBody]LoginModel model)
{
RESTCreatorHelper r = new RESTCreatorHelper(_configuration);
}
}
我已经在 SO 上搜索了很多关于这件事的内容,并尝试了很多方法似乎没有任何效果。显然我遗漏了一些东西,你能建议在 _configuration 对象中填充值需要什么,以及我应该如何访问属性值。
解决方案
问题是文件位于文件夹中,无法找到该文件。所以我更正了路径
var builder =
new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("ConfigurationFiles/AppSettings.json", optional: true, reloadOnChange: true);
并且还添加了正确绑定值的 AddOptions。
public void ConfigureServices(IServiceCollection services)
{
services.AddOptions();
services.Configure<AppConfiguration>(Configuration.GetSection("RestCalls"));
services.AddMvc();
}
推荐阅读
- angular - 延迟加载功能模块中未知的 Angular http 客户端拦截器
- android - Android Studio 3.4 无法解析所有依赖项
- pandoc - 当链接包含完整路径文件时,pandoc 生成 InvalidUrlException
- angular - LIFERAY 和 Angular 集成
- android - 如何在 Chrome 自定义标签中使用 getUrl()
- javascript - 如何立即获取UTC格式的日期?
- javascript - 使用 CSS 上下对齐按钮
- memory-leaks - Linux 是否保证在程序退出时释放 malloc 的未释放内存?
- oauth - oauth2 和 csrf 攻击
- c# - 调用 lock() 时发生 ThreadAbortException