Appsetting.json 读取控制器类中键的值,空白?
Posted
技术标签:
【中文标题】Appsetting.json 读取控制器类中键的值,空白?【英文标题】:Appsetting.json read value of key in Controller Class,Comes Blank? 【发布时间】:2018-12-18 02:41:54 【问题描述】:在我的 .net core 2.0 应用程序中,我创建了一个 appsettings.json 文件来存储应用程序的配置详细信息。
appsettings.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 对象中填充值需要什么以及我应该如何访问属性值。
【问题讨论】:
我已经尝试了您的解决方案,它对我来说可以正常工作。您是否检查过 ConfigureServices 步骤中的数据是否正确? 顺便说一句,如果这是从 Visual Studio 生成的 asp.net core 2 项目,则无需再显式创建ConfigurationBuilder
。现在,该功能在IWebHost
上的CreateDefaultBuilder
扩展方法的幕后得到了处理,该方法在Program.cs
中使用。尽管文章谈到了 asp.net core 2 的 beta 版本,但这里有更多信息:andrewlock.net/…
【参考方案1】:
问题是文件在文件夹中,无法找到该文件。所以我更正了路径
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();
【讨论】:
【参考方案2】:我认为这个问题可能与.SetBasePath(env.ContentRootPath)
有关,我相信它会返回到项目中的wwwroot
文件夹,而不是appsettings.json
所在的项目根目录。
如果更改为 .SetBasePath(Directory.GetCurrentDirectory())
,它有望开始工作。
我相信在 asp.net core 1 中,在创建 WebHostBuilder
时,内容根路径通常设置为当前目录,但这是来自内存,我可能错了。
【讨论】:
以上是关于Appsetting.json 读取控制器类中键的值,空白?的主要内容,如果未能解决你的问题,请参考以下文章
无法在鼠标事件处理程序中读取 WPF 中键的保持状态 - VMWare Fusion for Mac 上的 Windows 客户机中的行为不一致
解决.net core读取appSetting.json文件中文字符乱码